Excel / VBA объединить таблицы - PullRequest
0 голосов
/ 19 июня 2020

На мой взгляд, это не должно быть трудным, так что тем более неприятно, что я не могу этого понять. Это в Excel 2016 и VBA. Я пытаюсь скопировать 2 разные таблицы данных на 2 разные вкладки и объединить их на третьей вкладке с помощью простой кнопки. Полезный пользователь Reddit помог мне начать, но я застрял на отладке. Ошибка выполнения 438 возникает в начале LRowB, я проверил правильность названий вкладок. Код ниже:

Private Sub CommandButton1_Click()

Dim LRowA As Long
Dim LRowB As Long

LRowA = Sheets("PASSFAIL FEMALE").Cells(Sheets("PASSFAIL FEMALE").Rows.Count, "A").End(xlUp).Row
Sheets("PASSFAIL FEMALE").Range("A2:H" & LRowA).Copy
Sheets("Final Test Stat Sheet").Range("A2").Paste

LRowB = Sheets("PASSFAIL MALE").Cells(Sheets("PASSFAIL MALE").Rows.Count, "A").End(xlUp).Row
Sheets("PASSFAIL MALE").Range("A2:H" & LRowB).Copy
Sheets("Final Test Stat Sheet").Range("A2" & LRowA + 1).Paste

Sheets("Final Test Stat Sheet").Range("H27").Value = Now

Application.CutCopyMode = False

End Sub

1 Ответ

0 голосов
/ 19 июня 2020

Когда вы Copy и Paste, операции должны находиться в одной строке (и вы можете опустить последнее).

Но если вам нужны только значения и используйте pastespecial, это необходимо быть в отдельной строке.

Кроме того, использование With может привести в порядок код.

Private Sub CommandButton1_Click()

Dim LRowA As Long
Dim LRowB As Long

With Sheets("PASSFAIL FEMALE")
    LRowA = .Cells(.Rows.Count, "A").End(xlUp).Row
    .Range("A2:H" & LRowA).Copy
    Sheets("Final Test Stat Sheet").Range("A2").pastespecial xlvalues
End With

With Sheets("PASSFAIL MALE")
    LRowB = .Cells(.Rows.Count, "A").End(xlUp).Row
    .Range("A2:H" & LRowB).Copy
    Sheets("Final Test Stat Sheet").Range("A" & LRowA + 1).pastespecial xlvalues
    Sheets("Final Test Stat Sheet").Range("H27").Value = Now 'might overwrite?
End With

Application.CutCopyMode = False

End Sub
...