Это мой первый пост, когда я настраивал и охотился на пару дней, и мне не удалось найти разрешение здесь или в другом месте.Excel VBA: EntireColumn.Hidden не работает в Worksheet_Change()
Использования Excel 2010 я редактирую существующую незащищенную книгу и создал EntireColumn.Hidden
и EntireRow.Hidden
в командах в Worksheet_Change()
случае огня при изменении сота проверки данных, но они не работают.
Private Sub Worksheet_Change(ByVal Target As Range)
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
If Not Intersect(Target, Range("$C$2")) Is Nothing Then
Select Case Target.Value
Case "NO"
MsgBox "You just changed to HIDE" '<= Proves it fires
Range("$C$3").Value = "Invisible" '<= Does change cell
Columns("N:O").EntireColumn.Hidden = True '<= Doesn't hide
Case "YES"
MsgBox "You just changed to UNHIDE" '<= Proves it fires
Range("$C$3").Value = "Visible" '<= Does change cell
Columns("N:O").EntireColumn.Hidden = False '<= Doesn't unhide
End Select
End If
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
Событие стрельбы ОК, как я msgbox
эс, чтобы доказать это, и я могу изменить значения ячеек и т.д. с ним, но единственное, что не происходит фактическое скрытие/Отмена скрытия столбца /ряд.
Я скопировал свой код в совершенно новую книгу, и он работает. Поэтому я скопировал его обратно в оригинальную книгу, но как свежий чистый лист и все еще работает. Но он все еще не работает на оригинальном, значительном листе.
Однако, когда я скопировал это в простой макрос это делает работу именно так, как требуется, скрывая правильные колонки, но при нажатии кнопки:
Sub HideThem()
Columns("N:O").EntireColumn.Hidden = True '<= DOES work
End Sub
Тем не менее, мне это нужно, чтобы обновить автоматически в зависимости от значения одной ячейки. Я даже пытался назвать этот мини-Sub
из-за события Worksheet_Change()
, но это тоже не сработало.
Понятно, что очень базовый код, поэтому он бесит, что я не могу заставить его работать! Существуют ли какие-либо известные конфликты с другими командами/событиями, кнопками на листе, изображениями, объединенными ячейками и т. Д., Которые могут препятствовать сокрытию столбцов/строк?
Я не могу на всю жизнь понять, почему строки/столбец не будут автоматически скрываться, когда они выполняются вручную (щелкните правой кнопкой мыши «Скрыть») или нажмите кнопку макроса.
Я даже пытался использовать CheckBox
вместо ячейки YES/NO
Data Validation огня кода (как это может быть приемлемо), но когда я пытаюсь вставить ActiveX CheckBox
это говорит Невозможно вставить объект, даже в бренд новая пустая книга. Может ли это быть связанной проблемой?
Любые мысли об этом были бы очень признательны, поскольку я рву волосы!
Что произойдет, если вы выполните хотя бы код в исходном листе? –
Попробуйте 'Столбцы (« N: O »). Hidden = True', то есть удалить часть« EntireColumn » – kaybee99
Работает здесь, на листе, с которым вы пытаетесь ее использовать, есть ли в них такие вещи, как объединенные ячейки. Просто для тестирования попробуйте удалить все форматирование из N: O и попробуйте затем – 99moorem