Переменная объекта или переменная блока не установлена ​​для простого цикла VBA For - PullRequest
0 голосов
/ 05 февраля 2020

У меня, как я думал, был довольно простой фрагмент кода, чтобы найти указанные c данные в одном листе (4) по глубине и сопоставить их со столбцами той же глубины в другом листе (3). К сожалению, он продолжает выдавать

Ошибка времени выполнения '91': переменная объекта или переменная блока не установлена.

У меня есть диапазон вставки для данных (Использование оператор Address / Match), расположенный в столбцах S и T листа 4. Код следующий:

Sub CommandButton1_Click()
Dim wb As Workbook
Dim i As Integer
Dim Row1 As Long, Row2 As Long

For i = 3 To 4665
    If wb.Sheets(4).Range("S" & i).Value <> CVErr(xlErrNA) And wb.Sheets(4).Range("T" & i).Value <> CVErr(xlErrNA) Then
        Row1 = wb.Sheets(4).Range("S" & i).Row
        Row2 = wb.Sheets(4).Range("T" & i).Row
        wb.Sheets(3).Range("X" & Row1 & ":X" & Row2).Value = wb.Sheets(4).Range("E" & i).Value
        wb.Sheets(3).Range("Y" & Row1 & ":Y" & Row2).Value = wb.Sheets(4).Range("F" & i).Value
    End If
Next
End Sub

Я уверен, что это простая ошибка, которую я пропускаю, но не могу найти ошибку ( или ошибки). Любая помощь будет принята с благодарностью.

1 Ответ

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

set wb = activeworkbook

В VBA есть два типа переменных (извините, это неправильная терминология, но она близка). Один указывает на часть данных (например, строку или число). Другой указывает на «объект», который является контейнером для всех видов вещей. У объекта есть значения, у объекта есть методы, которые вы можете вызвать.

Книга - это объект. Вы можете получить доступ к данным из рабочей книги («Возьми меня, лист1, рабочая тетрадь!») И вызвать методы для рабочей книги (workbook.add).

С помощью простой переменной данных можно сказать filename = C:\exam.txt

Но объект должен быть SET. Каждый раз, когда вы видите «Объект не установлен», это означает, что вы сделали что-то вроде wb = activeworkbook вместо SET wb = activeworkbook.

Другой сценарий - вы забыли установить переменную для объекта, как вы делали выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...