У меня есть некоторый код VBA, который запрашивает и создает таблицу данных на листе с комментариями в некоторых ячейках.
Он занимает диапазон около A1:N200
, а затем я хочу скрыть неиспользуемые пробел, как в приведенном ниже коде.
Worksheet.Columns(Number_of_columns + 1).Resize(, Worksheet.Columns.Count - Number_of_columns).EntireColumn.Hidden = True
Worksheet.Rows(Number_of_rows & ":" & Worksheet.Rows.Count).EntireRow.Hidden = True
При этом выдается ошибка времени выполнения 1004:
Невозможно установить скрытое свойство класса диапазона
Я зарегистрировался в новом файле Excel, добавил комментарий к ячейке A1
, а затем попытался скрыть другие столбцы и строки, но мне пришлось оставить 4 столбца (от A до D, но это могли быть, например, A и C до E) и 5 строк видны. Если я пытаюсь скрыть больше, я получаю сообщение Cannot shift objects off sheet
.
Ниже приведен пример процедуры, которая выдает ошибки при запуске в новом файле Excel.
Private Sub Procedure()
Dim Worksheet As Excel.Worksheet
Dim Range As Excel.Range
Set Worksheet = Excel.Application.ThisWorkbook.ActiveSheet
Set Range = Worksheet.Cells(1, 1)
If Range.Comment Is Nothing Then
Range.AddComment
End If
Set Range = Worksheet.Columns(2).Resize(, Worksheet.Columns.Count - 1).EntireColumn
Range.Select ' Just to test the range, it works. Columns B to XFD
Range.Hidden = True ' Throws error
Set Range = Worksheet.Rows(2 & ":" & Worksheet.Rows.Count).EntireRow
Range.Select ' Just to test the range, it works. Rows 2 to 1048576
Range.Hidden = True ' Throws error
End Sub
Есть ли способ скрыть их, чтобы были видны только данные? Единственный обходной путь (не решение), о котором я могу подумать, - это удаление комментариев, скрытие столбцов и строк, а затем добавление комментариев обратно, что нежелательно.