VBA, Excel.Выполнить код, который смещает и изменяет размер диапазона, а затем копирует его.«Ошибка компиляции: неверное выражение для часов» - PullRequest
0 голосов
/ 29 мая 2019

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

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") содержит данные во всех ячейках.

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

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Вы не указали, к какому объекту .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 голосов
/ 29 мая 2019

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

Worksheets("Sheet").Range("namedrange_d").Resize(, 4).Offset(6, 0).Copy _
  Worksheets("Sheet1").Range("namedrange").Resize(, 4).Offset(6, 0)
...