Range("Data!$L$8:$L$9")
Этот неквалифицированный Range
вызов фактически неявно квалифицирован как ActiveSheet
, через немного член по умолчанию обман инемного косвенности.Для простоты мы можем сказать, что это будет эквивалентно:
ActiveSheet.Range("Data!__:__")
Есть проблема: строка адреса содержит имя листа, а Range
, который мы хотим получить с этой строкой,взяты из того, что есть ActiveSheet
.Если есть совпадение, нам повезло.В противном случае, бум.
Итак, мы здесь.Это работает?
ActiveSheet.Range("Data!$L$8:$L$9")
Поскольку этот приведенный в качестве примера код генерирует ту же ошибку, что и вы, по той же причине:
Sheet1.Range("Sheet2!A1")