Здравствуйте форумчане. В книге два листа. Есть ли возможность написать макрос, когда при удалении данных из ячейки А1 Листа1, строка 1 Листа2 скрывалась. И наоборот, если вводим данны в ячейку А1 Листа1, строка 1 Листа2 отображалась.
Здравствуйте форумчане. В книге два листа. Есть ли возможность написать макрос, когда при удалении данных из ячейки А1 Листа1, строка 1 Листа2 скрывалась. И наоборот, если вводим данны в ячейку А1 Листа1, строка 1 Листа2 отображалась.ivanov1974
Возможность есть. Код в модуль первого листа: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target(1).Address = "$A$1" Then Sheets(2).Rows(1).Hidden = Not Len(Target(1).Value) > 0 End If End Sub
[/vba]
Возможность есть. Код в модуль первого листа: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target(1).Address = "$A$1" Then Sheets(2).Rows(1).Hidden = Not Len(Target(1).Value) > 0 End If End Sub
Sub qq() Dim a As Boolean, aa As Boolean Dim b, bb bb = 1 a = Len(b) aa = Len(bb) Debug.Print a Debug.Print aa End Sub
[/vba] И еще [vba]
Код
Sub qq() Dim a If Not Len(a) Then MsgBox "QQ" If Len(a) Then Else MsgBox "AA" a = 0 If Not Len(a) Then MsgBox "QQqq" If Len(a) Then Else MsgBox "AAaa" End Sub
Sub qq() Dim a As Boolean, aa As Boolean Dim b, bb bb = 1 a = Len(b) aa = Len(bb) Debug.Print a Debug.Print aa End Sub
[/vba] И еще [vba]
Код
Sub qq() Dim a If Not Len(a) Then MsgBox "QQ" If Len(a) Then Else MsgBox "AA" a = 0 If Not Len(a) Then MsgBox "QQqq" If Len(a) Then Else MsgBox "AAaa" End Sub
Прошу прощения, я вообще далек от макросов. А если мне надо скрыть в Листе2 строку 4 и я меняю на Sheets(2).Rows(4).Hidden = Not Len(Target(4).Value) > 0 или на Sheets(2).Rows(4).Hidden = Len(Target(4).Value) = 0 - макрос не работает на отображение строки. Что я делаю не так?
Прошу прощения, я вообще далек от макросов. А если мне надо скрыть в Листе2 строку 4 и я меняю на Sheets(2).Rows(4).Hidden = Not Len(Target(4).Value) > 0 или на Sheets(2).Rows(4).Hidden = Len(Target(4).Value) = 0 - макрос не работает на отображение строки. Что я делаю не так?ivanov1974
Вообще Target - это изменявшийся диапазон. Т.к. можно изменить сразу много ячеек, а Вам нужно отследить одну, и она по счастью A1 - то можно смело сверяться что что первая ячейка этого диапазона наша. Поэтому всегда Target(1). Если отслеживать нужно другую ячейку - код будет немного сложнее, но решаемо.
Вообще Target - это изменявшийся диапазон. Т.к. можно изменить сразу много ячеек, а Вам нужно отследить одну, и она по счастью A1 - то можно смело сверяться что что первая ячейка этого диапазона наша. Поэтому всегда Target(1). Если отслеживать нужно другую ячейку - код будет немного сложнее, но решаемо.Hugo
Тогда всё-таки лучше писать не Sheets(2), а Sheets("Лист2") Обращение к листу по индексу Sheets(2) означает "лист, у которого ярлычок второй слева", а обращение Sheets("Лист2") означает "лист с именем Лист2" вне зависимости от позиции его ярлычка
Тогда всё-таки лучше писать не Sheets(2), а Sheets("Лист2") Обращение к листу по индексу Sheets(2) означает "лист, у которого ярлычок второй слева", а обращение Sheets("Лист2") означает "лист с именем Лист2" вне зависимости от позиции его ярлычкаAlex_ST