Использовать значение ячейки как часть макроса

Обычно я использую макрос для отображения и скрытия столбцов с помощью флажка. Я настроил его, определив столбцы в коде макроса.

Sub Hideshow()
    If Range("A1").Value = "True" Then
        ActiveSheet.Columns("B:C").Hidden = False
    ElseIf Range("A1").Value = "False" Then
        ActiveSheet.Columns("B:C").Hidden = True
    Else
    Return
    End If
    End Sub

Для этого кода A1 = результат установки флажка (True/False), а B:C — столбцы, которые я скрываю или, если они уже скрыты; показывает.

Однако теперь я делаю более динамичную версию этого, потому что мне надоедает прокручивать код макроса и изменять ссылку на каждую колонку, когда добавляется новая колонка или изменяется диапазон колонок.

Теперь я поместил столбцы, которые хочу скрыть, в ячейку A2 на моем листе, например, B: C

Я хотел бы, чтобы код макроса использовал значение этой ячейки как «определенный диапазон»? чтобы показать и скрыть диапазон столбцов, который я определил в ячейке A2.

Я нашел много похожих сообщений, но они немного отличаются, и я не могу заставить их работать для моего конкретного сценария.

Новый будет выглядеть примерно так

Sub Hideshow()
    If Range("A1").Value = "True" Then
        ActiveSheet.Columns(" The Value in A2 ").Hidden = False
    ElseIf Range("A1").Value = "False" Then
        ActiveSheet.Columns(" The Value in A2").Hidden = True
    Else
    Return
    End If
    End Sub

Любые идеи?


person Matt Cann    schedule 23.10.2018    source источник


Ответы (1)


Этот код должен помочь:

Sub HideShow()

    Dim ColsToHide As String
    ColsToHide = Sheet1.Range("A2") 'This will always get the value from the sheet with the codename Sheet1.

    'Unhide if hidden, hide if not hidden.
    ActiveSheet.Columns(ColsToHide).Hidden = Not ActiveSheet.Columns(ColsToHide).Hidden

End Sub  

Вероятно, есть лучшие способы выяснить, какие столбцы нужно скрыть - есть ли что-то конкретное в столбце, который решает, следует ли его скрывать или нет?

person Darren Bartrup-Cook    schedule 23.10.2018
comment
Спасибо, Даррен. Это не только упрощает мой исходный макрос, но и отвечает на вопрос. Я еще не пробовал, но уверен, что это сработает. Должен ли заголовок Dim быть конкретным именем или это настраиваемый заголовок? Я планирую установить макрос как «активный лист», а не указанный лист. - person Matt Cann; 23.10.2018
comment
Нет, вы можете использовать практически любое слово в качестве переменной. Избегайте слов, которые уже используются в VBA, таких как Workbook, Value, Name и т. д. (Когда вы говорите Dim title, я так понимаю, вы имеете в виду бит ColsToHide). - person Darren Bartrup-Cook; 24.10.2018