Работал раньше, но теперь ошибка выполнения 91 - PullRequest
0 голосов
/ 27 августа 2018

На прошлой неделе я несколько раз запускал свой код 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
...