Не работает макрос на скрытие строк и столбцов при использовании события Worksheet_Change.
Отобразить строки и столбцы получается, а скрыть нет.
Когда очищаю ячейку X13 происходит ошибка "Type mismatch" и жёлтым выделяется эта строка:
If Target = "" Then
Помогите исправить ошибку.
Используется такой код:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("X13")) Is Nothing Then
If Target = "" Then
Sheets("Лист1").Rows(14).Hidden = True
Sheets("Лист2").Columns(1).Hidden = True
Else
Sheets("Лист1").Rows(14).Hidden = False
Sheets("Лист2").Columns(1).Hidden = False
End If
End If
End Sub
Проблема связана с тем, что ячейка X13 объединённая.
Если юзер вводит данные в X13, то макрос считает, что изменения произошли в одной ячейке - в X13. В этом случае ошибка не происходит.
Если юзер очищает ячейку X13, то макрос считает, что очищена на только ячейка X13, а все ячейки, входящие в объединённую ячейку. В этом случае Target представляет собой не X13, а фрагмент X13:AS13. Этот фрагмент сравнивается с пустой строкой ("") и это считается недопустимым, т.к. можно сравнивать с пустой строкой только одну, а не несколько ячеек.
Обойти эту проблему можно так:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("X13")) Is Nothing Then
If Target.Cells(1).Value = "" Then
Sheets("Лист1").Rows(14).Hidden = True
Sheets("Лист2").Columns(1).Hidden = True
Else
Sheets("Лист1").Rows(14).Hidden = False
Sheets("Лист2").Columns(1).Hidden = False
End If
End If
End Sub