На прошлой неделе я несколько раз запускал свой код Excel vba без ошибок, но теперь получаю ошибку времени выполнения '91 или переменную блока не задана. В приведенном ниже коде он останавливается на LastRow=SummarySheet.ListObjects("Table1").ListColumns(3).DataBodyRange.Count
Из исследований, я считаю, что ошибка говорит мне SummarySheet никогда не был установлен, но вы можете увидеть в коде, что это так. Я новичок в VBA, как я могу его кодировать, чтобы он снова работал?
Обновление: я пробовал ActiveWorkbook
ThisWorkbook
и Workbooks("Summary")
все безрезультатно. Дальнейшее исследование ошибки приводит меня к мысли, что я не создаю действительную ссылку на объект. Я подтвердил совпадения имени Рабочего листа между фактической Рабочей книгой и кодом. Из ответов на данный момент и другого примера кода, который я исследовал, я думаю, что я нахожусь на правильном уровне. Я чувствую, что упускаю что-то простое, потому что я новичок.
Update2: я понял это. Моя ошибка на самом деле была в линии LastRow = SummarySheet.ListObjects("Table1").ListColumns(3).DataBodyRange.Count
. 3 должен быть 1. Третий столбец на странице, но первый столбец в таблице. Спасибо за помощь, она дала мне подсказку, необходимую для решения моей проблемы.
Sub MergeSelectedPowerSpec()
Dim SummarySheet As Worksheet
Dim FolderPath As String
Dim SelectedFiles() As Variant
Dim NRow As Long
Dim FileName As String
Dim NFile As Long
Dim WorkBk As Workbook
Dim SourceRange As Range
Dim DestRange As Range
Dim Tbl As ListObject
Dim LastRow As Long
Dim UnitNum As String
Dim RightPos As Long
Dim LeftPos As Long
Dim Odo As Long
' Sets Data Entry sheet as the location the merged data will go.
Set SummarySheet = ActiveWorkbook.Worksheets("Data Entry")
' Modify this folder path to point to the files you want to use.
FolderPath = "C:\Users\jziqsb\Desktop\FE Spreadsheet\"
' Set the current directory to the the folder path.
ChDrive FolderPath
ChDir FolderPath
' Open the file dialog box and filter on Excel files, allowing multiple files
' to be selected.
SelectedFiles = Application.GetOpenFilename( _
filefilter:="Excel Files (*.xl*), *.xl*", MultiSelect:=True)
' LastRow gets the number of rows in the table with data.
LastRow = SummarySheet.ListObjects("Table1").ListColumns(3).DataBodyRange.Count
' NRow keeps track of where to insert new rows in the destination workbook.
NRow = LastRow + 3