ошибка vba: переменная объекта или переменная блока не установлена - PullRequest
4 голосов
/ 12 апреля 2011

Я получаю сообщение об ошибке «объектная переменная или переменная блока не установлена» при выполнении следующего кода.Он находится в Access и ссылается на электронную таблицу Excel.Что не так с кодом?

wsTest.Range("A11").Activate    

Do Until IsEmpty(ActiveCell)
    intX = intX + wsTest.Cells(ActiveCell.Row, "L") 'error occurs on this line
    intY = intY + wsTest.Cells(ActiveCell.Row, "I")
    ActiveCell.Offset(1, 0).Select ' Step down 1 row to the next cell.
Loop

При первом запуске кода ошибки нет, только во второй раз.Закрытие и повторное открытие Access "решает" проблему.Как это может быть связано с этим кодом?

Ответы [ 3 ]

2 голосов
/ 13 апреля 2011

Вам нужно определить лист, например, так:

Dim wsTest As Worksheet

Set wsTest = Sheets("Sheet1")
1 голос
/ 13 апреля 2011

Поскольку ошибка появляется в выделенной строке, я полагаю, что вы пытаетесь ввести неверную сумму. Возможно, значение, возвращаемое wsTest.Cells(oCell.Row, "L"), не является целым числом, или вместо него следует использовать wsTest.Cells(oCell.Row, "L").Value.

Будет проще определить причину проблемы, добавив msgbox для проверки значения ячейки, как я добавил ниже.

В любом случае, я бы посоветовал вам избегать использования ссылок на ActiveCell, поскольку они ненадежны. Возможно, этот код помогает избежать этой ошибки (просто заменив ActiveCell на соответствующий объект ячейки).

Dim oCell as excel.range

set oCell = wsTest.Range("A11")

Do Until Len(oCell.Value) = 0
    msgbox(wsTest.Cells(oCell.Row, "L"))
    intX = intX + wsTest.Cells(oCell.Row, "L") 'error occurs on this line
    intY = intY + wsTest.Cells(oCell.Row, "I")
    Set oCell = oCell.Offset(1, 0) ' Step down 1 row to the next cell.
Loop
0 голосов
/ 13 апреля 2011

Попробуйте изменить

wsTest.Range("A11").Activate

до

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