Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Работа макроса на втором листе при изменении на первом листе - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Работа макроса на втором листе при изменении на первом листе (Макросы/Sub)
Работа макроса на втором листе при изменении на первом листе
ivanov1974 Дата: Понедельник, 26.05.2014, 17:48 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 149
Репутация: 1 ±
Замечаний: 0% ±

Здравствуйте форумчане. В книге два листа. Есть ли возможность написать макрос, когда при удалении данных из ячейки А1 Листа1, строка 1 Листа2 скрывалась. И наоборот, если вводим данны в ячейку А1 Листа1, строка 1 Листа2 отображалась.
 
Ответить
СообщениеЗдравствуйте форумчане. В книге два листа. Есть ли возможность написать макрос, когда при удалении данных из ячейки А1 Листа1, строка 1 Листа2 скрывалась. И наоборот, если вводим данны в ячейку А1 Листа1, строка 1 Листа2 отображалась.

Автор - ivanov1974
Дата добавления - 26.05.2014 в 17:48
Hugo Дата: Понедельник, 26.05.2014, 18:20 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3254
Репутация: 707 ±
Замечаний: 0% ±

2019
Возможность есть.
Код в модуль первого листа:
[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]


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеВозможность есть.
Код в модуль первого листа:
[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]

Автор - Hugo
Дата добавления - 26.05.2014 в 18:20
ivanov1974 Дата: Понедельник, 26.05.2014, 22:29 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 149
Репутация: 1 ±
Замечаний: 0% ±

Hugo, спасибо огромное, даже и не надеялся. Подобный вопрос уже задавал на форуме, но ответа не получил.
 
Ответить
СообщениеHugo, спасибо огромное, даже и не надеялся. Подобный вопрос уже задавал на форуме, но ответа не получил.

Автор - ivanov1974
Дата добавления - 26.05.2014 в 22:29
Alex_ST Дата: Понедельник, 26.05.2014, 22:47 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
Игорь, а не проще ли вместо [vba]
Код
Sheets(2).Rows(1).Hidden = Not Len(Target(1).Value) > 0
[/vba]записать [vba]
Код
Sheets(2).Rows(1).Hidden = Len(Target(1).Value) = 0
[/vba]а то какая-то избыточность получается



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеИгорь, а не проще ли вместо [vba]
Код
Sheets(2).Rows(1).Hidden = Not Len(Target(1).Value) > 0
[/vba]записать [vba]
Код
Sheets(2).Rows(1).Hidden = Len(Target(1).Value) = 0
[/vba]а то какая-то избыточность получается

Автор - Alex_ST
Дата добавления - 26.05.2014 в 22:47
Hugo Дата: Понедельник, 26.05.2014, 23:15 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3254
Репутация: 707 ±
Замечаний: 0% ±

2019
Ну да...
Я сперва написал
[vba]
Код
Not Len(Target(1).Value)
[/vba]
но так естественно не работало, тогда добавил >0 :)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеНу да...
Я сперва написал
[vba]
Код
Not Len(Target(1).Value)
[/vba]
но так естественно не работало, тогда добавил >0 :)

Автор - Hugo
Дата добавления - 26.05.2014 в 23:15
RAN Дата: Понедельник, 26.05.2014, 23:36 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
какая-то избыточность получается

[vba]
Код
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
[/vba]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Вторник, 27.05.2014, 09:26
 
Ответить
Сообщение
какая-то избыточность получается

[vba]
Код
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
[/vba]

Автор - RAN
Дата добавления - 26.05.2014 в 23:36
ivanov1974 Дата: Вторник, 27.05.2014, 13:20 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 149
Репутация: 1 ±
Замечаний: 0% ±

Прошу прощения, я вообще далек от макросов. А если мне надо скрыть в Листе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
Дата добавления - 27.05.2014 в 13:20
RAN Дата: Вторник, 27.05.2014, 13:31 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Target(4)

[vba]
Код
Target(1)
[/vba]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Вторник, 27.05.2014, 13:32
 
Ответить
СообщениеTarget(4)

[vba]
Код
Target(1)
[/vba]

Автор - RAN
Дата добавления - 27.05.2014 в 13:31
Hugo Дата: Вторник, 27.05.2014, 13:40 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3254
Репутация: 707 ±
Замечаний: 0% ±

2019
Вообще Target - это изменявшийся диапазон.
Т.к. можно изменить сразу много ячеек, а Вам нужно отследить одну, и она по счастью A1 - то можно смело сверяться что что первая ячейка этого диапазона наша. Поэтому всегда Target(1).
Если отслеживать нужно другую ячейку - код будет немного сложнее, но решаемо.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеВообще Target - это изменявшийся диапазон.
Т.к. можно изменить сразу много ячеек, а Вам нужно отследить одну, и она по счастью A1 - то можно смело сверяться что что первая ячейка этого диапазона наша. Поэтому всегда Target(1).
Если отслеживать нужно другую ячейку - код будет немного сложнее, но решаемо.

Автор - Hugo
Дата добавления - 27.05.2014 в 13:40
Alex_ST Дата: Вторник, 27.05.2014, 22:25 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
в Листе2
Тогда всё-таки лучше писать не Sheets(2), а Sheets("Лист2")
Обращение к листу по индексу Sheets(2) означает "лист, у которого ярлычок второй слева", а обращение Sheets("Лист2") означает "лист с именем Лист2" вне зависимости от позиции его ярлычка



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение
в Листе2
Тогда всё-таки лучше писать не Sheets(2), а Sheets("Лист2")
Обращение к листу по индексу Sheets(2) означает "лист, у которого ярлычок второй слева", а обращение Sheets("Лист2") означает "лист с именем Лист2" вне зависимости от позиции его ярлычка

Автор - Alex_ST
Дата добавления - 27.05.2014 в 22:25
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Работа макроса на втором листе при изменении на первом листе (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!