Я пытаюсь сместить, изменить размер и скопировать диапазон, содержащий данные, и набираю эту строку кода в ближайшем окне:

shAll.Range("A1:I78").Offset(1).Resize(.Rows.Count - 1, .Columns.Count - 
1).SpecialCells(xlCellTypeVisible).copy

Когда я нажимаю ввод, я получаю эту ошибку: «Ошибка компиляции: неверное выражение наблюдения»

Это проблема синтаксиса?

Эта часть кода работает нормально, когда выполняется в непосредственном окне:

shAll.Range("A1:I78").Offset(1).select

Это смещено так, как я хочу. Оставшаяся часть - изменить размер и скопировать его.

Кстати, диапазон shAll.Range("A1:I78") содержит данные во всех ячейках.

Заранее спасибо!

0
SweDentan 29 Май 2019 в 15:12

2 ответа

Лучший ответ

Вы не указали, к какому объекту .Rows и .Columns применяются.

Если они относятся к диапазону, то

With shAll.Range("A1:I78")
    .Offset(1).Resize(.Rows.Count - 1, .Columns.Count - 1).SpecialCells(xlCellTypeVisible).copy
End with

Или

shAll.Range("A1:I78").Offset(1).Resize(shAll.Range("A1:I78").Rows.Count - 1, _
shAll.Range("A1:I78").Columns.Count - 1).SpecialCells(xlCellTypeVisible).copy
0
user11509084user11509084 29 Май 2019 в 12:49

Вы можете указать диапазон имен или указать нужный диапазон.

Worksheets("Sheet").Range("namedrange_d").Resize(, 4).Offset(6, 0).Copy _
  Worksheets("Sheet1").Range("namedrange").Resize(, 4).Offset(6, 0)
0
QuickSilver 29 Май 2019 в 12:18