Выберите Дело 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