Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2011, 11:45   #1
NightWolf990
Новичок
Джуниор
 
Регистрация: 10.10.2011
Сообщений: 2
По умолчанию Объединение нескольких макросов под Worksheet_Change

Добрый день. Хотел реализовать на одном листе заполняемую информацию, при заполнении которой, на втором листе отображались необходимые строчки, а лишние скрывались. На первом листе у меня есть несколько ячеек с выпадающем списком. И к ним хотелось бы подвязать скрытие/отображение.
Как правильно прописать эти коды под одной шапкой Worksheet_Change, чтобы все работали. При объединении, работает только тот, который вставляется выше
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, j As Long, lr As Long
If Intersect([b7], Target) Is Nothing Then Exit Sub
With Sheets("ÊÄ")
.[a153:a184].EntireRow.Hidden = False
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
.[a153:a184].EntireRow.Hidden = True
For i = 1 To lr
If .Cells(i, 1) = Target.Value Then
    .Rows.EntireRow(i + 1).Hidden = False
    i = i + 1
    Exit For
End If
Next
For j = i To lr
    If Left(.Cells(j, 1), 1) = "-" Then
    .Rows.EntireRow(j).Hidden = False
    Else
    Exit For
    End If
Next
End With
End Sub
Планируется еще несколько таких ячеек со своими диапазонами скрытия и отображения
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect([b16], Target) Is Nothing Then Exit Sub
With Sheets("ÊÄ")
.[a35:a49].EntireRow.Hidden = False
.[a35:a49].EntireRow.Hidden = True
If Target.Value = 1 Then
    .[a35].EntireRow.Hidden = False
    End If
If Target.Value = 2 Then
    .[a35:a36].EntireRow.Hidden = False
    End If
End With
End Sub
NightWolf990 вне форума Ответить с цитированием
Старый 11.10.2011, 11:54   #2
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, j As Long, lr As Long
If Intersect([b7,b16], Target) Is Nothing Then Exit Sub
With Sheets("EA")
.[a153:a184].EntireRow.Hidden = False
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
.[a153:a184].EntireRow.Hidden = True
For i = 1 To lr
If .Cells(i, 1) = Target.Value Then
    .Rows.EntireRow(i + 1).Hidden = False
    i = i + 1
    Exit For
End If
Next
For j = i To lr
    If Left(.Cells(j, 1), 1) = "-" Then
    .Rows.EntireRow(j).Hidden = False
    Else
    Exit For
    End If
Next
End With
With Sheets("EA")
.[a35:a49].EntireRow.Hidden = False
.[a35:a49].EntireRow.Hidden = True
If Target.Value = 1 Then
    .[a35].EntireRow.Hidden = False
    End If
If Target.Value = 2 Then
    .[a35:a36].EntireRow.Hidden = False
    End If
End With
End Sub
А условия перехода в зависимости от Target вставьте сами.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 11.10.2011 в 11:56.
kuklp вне форума Ответить с цитированием
Старый 11.10.2011, 12:28   #3
NightWolf990
Новичок
Джуниор
 
Регистрация: 10.10.2011
Сообщений: 2
По умолчанию

Большое спасибо, все работает
NightWolf990 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA объединение макросов DJTreeno Microsoft Office Excel 3 17.06.2011 11:33
Объединение макросов Pilot Microsoft Office Excel 13 31.08.2010 18:05
соединение нескольких макросов и кнопка Shpr0T Microsoft Office Excel 2 28.08.2010 16:13
Объединение нескольких книг clop1000 Microsoft Office Excel 1 30.11.2009 09:10
Объединение нескольких БД в одну БД GhostBZ БД в Delphi 4 01.09.2009 09:00