Как скрыть столбцы в именованном диапазоне VBA? - PullRequest
0 голосов
/ 15 ноября 2018

Я довольно новичок в VBA и пытаюсь скрыть некоторые столбцы в книгах.Я должен сделать это в VBA, потому что рабочая книга - это книга Analysis for Office, поэтому мне нужно скрыть некоторые столбцы, которые конечные пользователи не должны видеть.Моя проблема заключается в том, что я не могу указать конкретную букву столбцов, потому что, поскольку рабочая книга может изменяться как сводная таблица с другими измерениями относительно значений по умолчанию, с которыми она открывается, если я указываю на конкретный столбец вкод, это не будет то же самое, когда пользователь добавляет новые измерения.Поэтому я должен найти столбец с его именем и скрыть его.

Итак, на данный момент я попробовал это:

Sub Hide_Columns()
'Dim Sourcecell As Range
Dim wb As Workbook
Dim ws As Worksheet
'Set Sourcecell = Nothing
'Set Sourcecell = ThisSheet.Range("SapCrosstab1").Find("Colonna di calcolo", LookIn:=xlFormulas)
Set wb = ActiveWorkbook
Set ws = wb.Sheets("Demand Planning")

    wb.Sheets("Demand Planning").Range("Colonna di calcolo").EntireColumn.Hidden = True
End Sub

Проблема здесь в том, что у меня

«Ошибка времени выполнения 1004: ошибка приложения или объекта»

, и я не знаю, как ее исправить.Я прокомментировал эти 3 строки, потому что я не уверен, что они могут помочь.

1 Ответ

0 голосов
/ 15 ноября 2018

Ваша текущая попытка не удалась, потому что Range("Colonna di calcolo") не будет искать столбец с таким заголовком.Вместо этого он хочет получить доступ к именованному диапазону с этим именем, и если вы не определите это, он выдаст именно эту ошибку 1004.

Я думаю, что ваша попытка с SourceCellбыло неплохо - введите команду Find и скройте EntireColumn найденной ячейки.Ваша ошибка заключалась в том, что нет объекта ThisSheet.Существуют объекты ThisWorkbook, которые относятся ко всей книге, в которой хранится код, или ActiveWorkbook, которая является рабочей книгой, которая отображается в данный момент (необязательно книга, в которой хранится макрос).

Вы можетерешите вашу проблему либо определив именованный диапазон для столбца - в этом случае ваш код должен работать.
Или измените код на что-то вроде

Dim ws as Worksheet
Set ws = ThisWorkbook.Sheets("Demand Planning")

Dim Sourcecell as Range
Set Sourcecell = ws.Range("1:1").Find("Colonna di calcolo", LookIn:=xlFormulas)
If Not Sourcecell Is Nothing Then
    Sourcecell.EntireColumn.Hidden = True
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...