Мне нужна помощь.
У меня есть вывод из очень старой системы, которая дает нам манифесты для грузоперевозок. Думайте о них как об отгрузочных талонах.
Каждый начинается с заголовка «Номер манифеста: #####», где #### - фактическое число.
Загвоздка в том, что когда они распечатываются, они должны быть разнесены, поэтому по одному на страницу. (что никогда не бывает в необработанном выводе.) На первой странице всегда есть первый манифест (хорошо), но также и второй манифест. Ежедневно я подсчитываю пробелы и вставляю строки над заголовком второго манифеста, пока он не окажется на второй странице. Затем я подсчитываю строки между 2-м и 3-м и вставляю пробелы над третьим заголовком, пока он не окажется на странице 3, и так далее. При выполнении 18 страниц это становится утомительным.
Я смотрю, не могли бы вы помочь мне с макросом, который ищет заголовок " МАНИФЕСТНЫЙ НОМЕР ", а затем подсчитывает строки до следующего разрыва страницы (разрывы страницы - каждые 47 строк) и вставляет это количество строк выше. Затем выполните это действие еще раз для следующего.
При необходимости могу предоставить файл примера.
РЕДАКТИРОВАТЬ: Я решил свою проблему. Ниже приведен код, который я использовал.
Sub ManifestSplit()
'
' ManifestSplit Macro
Dim gap As Long
gap = 7
Dim searchText As String
searchText = "*MANIFEST NUMBER*"
Dim originalRange As Range
Set originalRange = Range("A" & (gap + 1) & ":A1000")
Dim manifestTotal As Long
manifestTotal = Application.WorksheetFunction.CountIf(originalRange, searchText)
MsgBox ("The total number of Manifests is " & manifestTotal + 1)
Dim manifestLocation As Long
Dim numberofrowstoPage
Dim newRange As Range
Dim counter As Long
If manifestTotal = 0 Then
MsgBox ("There is only one Manifest. Macro will end.")
Else
For counter = 1 To manifestTotal
Set newRange = Range("A" & (gap + 1) & ":A1000")
manifestLocation = Application.WorksheetFunction.Match(searchText, newRange, 0) + gap
' MsgBox ("The " & counter & " manifest is on line " & manifestLocation)
numberofrowstoPage = counter * 47 - manifestLocation
' MsgBox ("The Number of Rows that will be inserted is " & numberofrowstoPage)
Rows(manifestLocation & ":" & (manifestLocation + numberofrowstoPage + 1)).Insert Shift:=xlDown
gap = 47 * counter + 2
Next counter
End If
End Sub