Извините, если в этом есть очевидные ошибки, я не очень хорошо разбираюсь в синтаксисе VBA и занимаюсь этим весь день.
Я работаю над презентацией и мне нужна помощь в области кода, которая переносит данные с одного листа (Данные) на другой лист (Презентация). Весь код выполняет итерацию по выпадающей ячейке, а затем повторяет цикл для печати всех соответствующих данных на листе презентации для 4 столбцов, если имя в строке вкладки данных совпадает с именем в раскрывающемся списке. Затем код печатает PDF-файл, прежде чем выполнить следующую опцию в раскрывающемся списке.
Выпадающий лист находится на листе презентации в ячейке A1
Столбец с именами для сопоставления находится на листе данных в столбце " C "
Данные для печати начинаются в столбце D и проходят через столбец I
Итерация выпадающего меню работает нормально, и я получаю PDF-файлы с соответствующим печатаемым именем, но остальная часть PDF пуста, что указывает на оператор If или код ячейки = ячейки. Когда я останавливаю отладчик, я получаю только желтую подсветку отладки ошибки в строке кода «Если» или в строке кода «Конец если», но не поле ошибки или код ошибки.
'If Drop down on Presentation is equal to name on Data
If Worksheets("Presentation").Cells(1, 1).Value = Worksheets("Data").Cells(i, 3).Value Then
'Copy all matching cells to Presentation
Worksheets("Presentation").Cells(j, 1).Value = Worksheets("Data").Cells(i, k)
Вот полный код, если он помогает:
Sub iterateThroughComments()
Dim wks As Worksheet
Set wks = Worksheets("Data")
Dim colRange As Range
Set colRange = Worksheets("Data").Range("D:I").Columns
Dim LastRow As Long
LastRow = wks.Cells(wks.Rows.Count, "A").End(xlUp).Row
Dim rowRange As Range
Set rowRange = wks.Range("A1:A" & LastRow)
Dim pdfPath As String
pdfPath = "C:\Users\Person\Desktop\Exports\Survey\PDFs\Comments\"
Dim pdfName As Range
Set pdfName = Worksheets("Presentation").Range("A1")
Dim dvCell As Range
'Which cell has data validation
Set dvCell = Worksheets("Presentation").Range("A1")
Dim inputRange As Range
'Determine where validation comes from
Set inputRange = Evaluate(dvCell.Validation.Formula1)
Dim c As Range
Dim i As Long
'i is row counter on Data
i = 2
Dim j As Long
'j is row counter on Presentation
j = 3
Dim k As Long
'k is the column counter on Data
k = 4
'Begin dropdown iteration
Application.ScreenUpdating = False
For Each c In inputRange
dvCell = c.Value
Worksheets("Data").Activate
'Loop through each column
For Each colRange In Worksheets("Data").Range("D1:I1").Columns
'Loop through all cells in row up to last col
For Each cell In rowRange
'If Drop down on Presentation is equal to Center name on Data
If Worksheets("Presentation").Cells(1, 1).Value = Worksheets("Data").Cells(i, 3).Value Then
'Copy all matching cells to Presentation
Worksheets("Presentation").Cells(j, 1).Value = Worksheets("Data").Cells(i, k)
j = j + 1
i = i + 1
k = k + 1
End If
Next cell
Next colRange
ScreenUpdating = True
Worksheets("Presentation").Activate
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=pdfPath & pdfName & ".pdf", _
OpenAfterPublish:=False _
Next c
Application.ScreenUpdating = True
End Sub