VBA If тогда заявление - PullRequest
       0

VBA If тогда заявление

0 голосов
/ 13 февраля 2020

Извините, если в этом есть очевидные ошибки, я не очень хорошо разбираюсь в синтаксисе 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...