Ошибка времени выполнения Excel VBA 450 из-за прямой ссылки на диапазон, а не через промежуточную переменную - PullRequest
3 голосов
/ 18 июня 2019

Я получаю ошибку времени выполнения 450, когда пытаюсь ссылаться на значение в диапазоне напрямую, но если я использую промежуточную переменную, она работает.Я не понимаю, почему, так что я волнуюсь, я снова получу ошибку в какой-то момент в будущем, не зная, почему.

Я пытался использовать блок With ... End With, и он все еще не работает, когдаЯ ссылаюсь на диапазон напрямую.

Этот код выдает ошибку

Public Sub Test_PT()
Dim lol As String

    lol = Worksheets(1).PivotTables("PivotTable2").RowRange(2, 1).Value
    MsgBox (lol)

End Sub

Хотя этот код работает нормально

Public Sub Test_PT()
Dim lol As String
Dim rng As Range

    Set rng = Worksheets(1).PivotTables("PivotTable2").RowRange
    lol = rng(2, 1).Value

    MsgBox (lol)

End Sub

Я не знаю, почему он работает во 2-йБлок кода, но не в первом.Я пробовал вариации какого уровня, чтобы установить промежуточную переменную.Если я создаю переменную сводной таблицы и задаю ее соответствующим образом, код работает нормально, но если я создаю переменную рабочего листа и пытаюсь ссылаться на тот же диапазон, используя переменную рабочего листа, она не работает.

Хотя я могу получитьэтот кусок кода, работающий с использованием промежуточной переменной, я действительно хочу понять, ПОЧЕМУ мне нужно сделать это в случае, если он встречается в других контекстах.

1 Ответ

1 голос
/ 19 июня 2019

Свойство RowRange возвращает объект Range, но не принимает никаких аргументов , поэтому вы не можете передать его внутрь.

lol = Worksheets(1).PivotTables("PivotTable2").RowRange.Cells(2, 1).Value 

отлично работает для меня

lol = Worksheets(1).PivotTables("PivotTable2").RowRange()(2, 1).Value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...