Выберите Дело VBA не работает

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

Private Sub worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("C2")) Is Nothing Then
    On Error GoTo bm_Safe_Exit
    ActiveSheet.Unprotect Password:="Password"
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Columns("AD:JF").Hidden = False

    Select Case Range("C2").Value2
        Case 1
            Columns("AQ:DC,DR:GD,GS:JE").Hidden = True
            ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=3
            ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=2
            ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
        Case 2
            Columns("BD:DC,EE:GD,HF:JE").Hidden = True
            ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=3
            ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=2
            ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
        Case 3
            Columns("BQ:DC,ER:GD,HS:JE").Hidden = True
            ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=3
            ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=2
            ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
        Case 4
            Columns("CD:DC,FE:GD,IF:JE").Hidden = True
            ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=3
            ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=2
            ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
        Case 5
            Columns("CQ:DC,FR:GD,IS:JE").Hidden = True
            ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=3
            ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=2
            ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
        Case 6
            ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=3
            ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=2
            ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
    End Select
End If

bm_Safe_Exit:
Application.EnableEvents = True
Application.ScreenUpdating = True
ActiveSheet.Protect Password:="password"

End Sub

Изображение включено в макет электронной таблицы

1 ответ

Когда я пытался

Columns("AQ:DC,DR:GD,GS:JE").Hidden = True

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

Columns("AQ:DC").Hidden = True
Columns("DR:GD").Hidden = True
Columns("GS:JE").Hidden = True
Другие вопросы по тегам