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

Вход

Регистрация

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

 

= Мир MS Excel/Как сделать выпадающий список макросов? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как сделать выпадающий список макросов? (Макросы/Sub)
Как сделать выпадающий список макросов?
staff10207 Дата: Пятница, 11.12.2015, 18:12 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Есть кнопки с макросами. Как их все запихнуть в один выпадающий список(точнее действие этих кнопок, а не сами кнопки:-))? И чтобы естественно по выбору макроса из этого выпадающего списка он выполнял свое действие.

Конкретно по моему прикрепленному файлу. В графе "Отобразить купонов" есть кнопки 5,10,15,20,25, которые, при кликании на них, отображают нужное количество столбцов. Вот их надо запихнуть в один выпадающий список, и чтобы при их выборе из списка, они выполняли своё действие. Как это сделать?

То есть делаю это для того, чтобы была возможность выбирать отображение от 1 до 25 столбцов в выпадающем списке, а не как сейчас только 5,10,15,20,25.
К сообщению приложен файл: 7369912.xlsm (46.7 Kb)


Сообщение отредактировал staff10207 - Пятница, 11.12.2015, 18:15
 
Ответить
СообщениеЕсть кнопки с макросами. Как их все запихнуть в один выпадающий список(точнее действие этих кнопок, а не сами кнопки:-))? И чтобы естественно по выбору макроса из этого выпадающего списка он выполнял свое действие.

Конкретно по моему прикрепленному файлу. В графе "Отобразить купонов" есть кнопки 5,10,15,20,25, которые, при кликании на них, отображают нужное количество столбцов. Вот их надо запихнуть в один выпадающий список, и чтобы при их выборе из списка, они выполняли своё действие. Как это сделать?

То есть делаю это для того, чтобы была возможность выбирать отображение от 1 до 25 столбцов в выпадающем списке, а не как сейчас только 5,10,15,20,25.

Автор - staff10207
Дата добавления - 11.12.2015 в 18:12
RAN Дата: Пятница, 11.12.2015, 18:16 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Ищите.
За пять лет вы второй, кому эта идея в голову пришла.
Первый пробегал пару месяцев назад.
Чи тут, чи по Планете, не помню.


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

Сообщение отредактировал RAN - Пятница, 11.12.2015, 18:16
 
Ответить
СообщениеИщите.
За пять лет вы второй, кому эта идея в голову пришла.
Первый пробегал пару месяцев назад.
Чи тут, чи по Планете, не помню.

Автор - RAN
Дата добавления - 11.12.2015 в 18:16
SLAVICK Дата: Пятница, 11.12.2015, 18:28 | Сообщение № 3
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
ТАк?
К сообщению приложен файл: 6796990.xlsm (43.5 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеТАк?

Автор - SLAVICK
Дата добавления - 11.12.2015 в 18:28
staff10207 Дата: Пятница, 11.12.2015, 18:53 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
SLAVICK, то есть для каждого столбца все равно придется отдельный макрос создавать? или можно как-то упростить этот процесс? Я хочу, чтоб можно было 1,2,3,4 и т.д. до 25 скрывать/отображать.


Сообщение отредактировал staff10207 - Пятница, 11.12.2015, 18:55
 
Ответить
СообщениеSLAVICK, то есть для каждого столбца все равно придется отдельный макрос создавать? или можно как-то упростить этот процесс? Я хочу, чтоб можно было 1,2,3,4 и т.д. до 25 скрывать/отображать.

Автор - staff10207
Дата добавления - 11.12.2015 в 18:53
SLAVICK Дата: Пятница, 11.12.2015, 19:22 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
то есть для каждого столбца все равно придется отдельный макрос создавать

Можно один универсальный:
[vba]
Код
Sub HideALL(n%)
Dim i As Long
    Application.ScreenUpdating = False
    For i = 13 To 37
        If Cells(1, i) <= n Then
            Cells(1, i).EntireColumn.Hidden = False
        Else
            Cells(1, i).EntireColumn.Hidden = True
        End If
    Next
    Application.ScreenUpdating = True
End Sub
[/vba]
И в лист вот это:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim n
    If Not Target.Address = Range("AN3").Address Then Exit Sub
    n = Range("BG1:BG100").Find(What:=Target.Value, After:=Range("BG1"), LookIn:=xlValues, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Row
    Run "HideALL", n
End Sub
[/vba]
К сообщению приложен файл: 6796990-1-.xlsm (45.0 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
то есть для каждого столбца все равно придется отдельный макрос создавать

Можно один универсальный:
[vba]
Код
Sub HideALL(n%)
Dim i As Long
    Application.ScreenUpdating = False
    For i = 13 To 37
        If Cells(1, i) <= n Then
            Cells(1, i).EntireColumn.Hidden = False
        Else
            Cells(1, i).EntireColumn.Hidden = True
        End If
    Next
    Application.ScreenUpdating = True
End Sub
[/vba]
И в лист вот это:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim n
    If Not Target.Address = Range("AN3").Address Then Exit Sub
    n = Range("BG1:BG100").Find(What:=Target.Value, After:=Range("BG1"), LookIn:=xlValues, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Row
    Run "HideALL", n
End Sub
[/vba]

Автор - SLAVICK
Дата добавления - 11.12.2015 в 19:22
staff10207 Дата: Пятница, 11.12.2015, 19:44 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
SLAVICK, При выборе 1-ого почему-то 11 показывает.
 
Ответить
СообщениеSLAVICK, При выборе 1-ого почему-то 11 показывает.

Автор - staff10207
Дата добавления - 11.12.2015 в 19:44
SLAVICK Дата: Пятница, 11.12.2015, 20:42 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
упустил из виду :o ... нужно вместо
[vba]
Код
n = Range("BG1:BG100").Find(What:=Target.Value, After:=Range("BG1"), LookIn:=xlValues, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Row
[/vba]Написать
[vba]
Код
n = Range("BG1:BG100").Find(What:=Target.Value, After:=Range("BG1"), LookIn:=xlValues, LookAt _
        :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Row
[/vba]
К сообщению приложен файл: 4015552.xlsm (44.0 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Пятница, 11.12.2015, 20:42
 
Ответить
Сообщениеупустил из виду :o ... нужно вместо
[vba]
Код
n = Range("BG1:BG100").Find(What:=Target.Value, After:=Range("BG1"), LookIn:=xlValues, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Row
[/vba]Написать
[vba]
Код
n = Range("BG1:BG100").Find(What:=Target.Value, After:=Range("BG1"), LookIn:=xlValues, LookAt _
        :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Row
[/vba]

Автор - SLAVICK
Дата добавления - 11.12.2015 в 20:42
staff10207 Дата: Пятница, 11.12.2015, 20:50 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
SLAVICK, спасибо вам. Также мне дали ответ на другом форуме. Вот в таком варианте.
К сообщению приложен файл: 2619519.xlsm (40.9 Kb)
 
Ответить
СообщениеSLAVICK, спасибо вам. Также мне дали ответ на другом форуме. Вот в таком варианте.

Автор - staff10207
Дата добавления - 11.12.2015 в 20:50
RAN Дата: Пятница, 11.12.2015, 21:06 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Также мне дали ответ на другом форуме

Почему прямо не сказать, где?


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Также мне дали ответ на другом форуме

Почему прямо не сказать, где?

Автор - RAN
Дата добавления - 11.12.2015 в 21:06
staff10207 Дата: Пятница, 11.12.2015, 21:19 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
RAN, ну мало ли) может тут ссылки на другие ресурсы запрещены. правила толком не читал)
 
Ответить
СообщениеRAN, ну мало ли) может тут ссылки на другие ресурсы запрещены. правила толком не читал)

Автор - staff10207
Дата добавления - 11.12.2015 в 21:19
RAN Дата: Пятница, 11.12.2015, 22:16 | Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
правила толком не читал

Чукча не читатель. Чукча пИсатель.
Я давно понял. :'(
Жаль, не все.


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

Чукча не читатель. Чукча пИсатель.
Я давно понял. :'(
Жаль, не все.

Автор - RAN
Дата добавления - 11.12.2015 в 22:16
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как сделать выпадающий список макросов? (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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