Всем привет! Копался по многим ссылкам, но так ничего похожего и не нашел(((. Суть такова. Имеются два макроса. Макрос 1 и Макрос 2. Как сделать так, чтобы эти макросы запускались из выпадающего списка, соответственно кликая на выбранный. Т.е. в моей рабочей книге более 10 макросов. Каждому макросу назначена кнопка. И получается по 10 кнопок на каждом листе. А листов тоже не мало. А так будет всего одна кнопка. На нее нажимаешь, раскрывается список макросов, выбираешь, кликаешь, и все. Файл прилагаю. И картинку.
Всем привет! Копался по многим ссылкам, но так ничего похожего и не нашел(((. Суть такова. Имеются два макроса. Макрос 1 и Макрос 2. Как сделать так, чтобы эти макросы запускались из выпадающего списка, соответственно кликая на выбранный. Т.е. в моей рабочей книге более 10 макросов. Каждому макросу назначена кнопка. И получается по 10 кнопок на каждом листе. А листов тоже не мало. А так будет всего одна кнопка. На нее нажимаешь, раскрывается список макросов, выбираешь, кликаешь, и все. Файл прилагаю. И картинку. maxexcel
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("l13")) Is Nothing Then Application.Run Cells(13, 12).Value End If End Sub
[/vba]
вариант с проверкой данных -> список [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("l13")) Is Nothing Then Application.Run Cells(13, 12).Value End If End Sub
Да, вариант не плохой. Но еще если бы названия макросов в выпадающем списке можно было именовать. Т.е. не "Макрос 1", а "Окрасить ячейку в желтый цвет". Когда я работал над остальными макросами, т.е. я имею в виду свою книгу, я называл их по свойски, а моей книгой будут пользоваться и другие пользователи. Да, можно конечно переименовать свои макросы, но эти названия уже имеют много завязок, что буду сидеть два дня и где-нибудь точно ошибусь)))))))))))).
Да, вариант не плохой. Но еще если бы названия макросов в выпадающем списке можно было именовать. Т.е. не "Макрос 1", а "Окрасить ячейку в желтый цвет". Когда я работал над остальными макросами, т.е. я имею в виду свою книгу, я называл их по свойски, а моей книгой будут пользоваться и другие пользователи. Да, можно конечно переименовать свои макросы, но эти названия уже имеют много завязок, что буду сидеть два дня и где-нибудь точно ошибусь)))))))))))).maxexcel
Сообщение отредактировал maxexcel - Четверг, 22.10.2015, 20:04
Ребят, может кто-нибудь сталкивался с таким. А то и правда, на каждом листе в ячейках писать наименование и формулу прописывать для выпадающего списка. Если бы внутрь макроса это запихнуть.
Ребят, может кто-нибудь сталкивался с таким. А то и правда, на каждом листе в ячейках писать наименование и формулу прописывать для выпадающего списка. Если бы внутрь макроса это запихнуть.maxexcel
maxexcel, а можно макросы сразу называть понятными именами, и в L13 записать список макросов модуля: [vba]
Код
Private Sub Worksheet_Activate() Dim oVBComponent As Object Dim strList$: strList = "" For Each oVBComponent In ActiveWorkbook.VBProject.VBComponents With oVBComponent If .Type = 1 Then With oVBComponent.CodeModule For i = 1 To .CountOfLines If InStr(1, .Lines(i, 1), "Sub ") And InStr(1, .Lines(i, 1), "Exit ") = 0 Then strList = strList & ", " & Replace(Replace(.Lines(i, 1), "Sub ", ""), "()", "") End If Next i End With End If End With Next Set oVBComponent = Nothing strList = Mid(strList, 3) With Range("l13").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:=strList End With End Sub
[/vba]
maxexcel, а можно макросы сразу называть понятными именами, и в L13 записать список макросов модуля: [vba]
Код
Private Sub Worksheet_Activate() Dim oVBComponent As Object Dim strList$: strList = "" For Each oVBComponent In ActiveWorkbook.VBProject.VBComponents With oVBComponent If .Type = 1 Then With oVBComponent.CodeModule For i = 1 To .CountOfLines If InStr(1, .Lines(i, 1), "Sub ") And InStr(1, .Lines(i, 1), "Exit ") = 0 Then strList = strList & ", " & Replace(Replace(.Lines(i, 1), "Sub ", ""), "()", "") End If Next i End With End If End With Next Set oVBComponent = Nothing strList = Mid(strList, 3) With Range("l13").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:=strList End With End Sub
Я бы сделал так: создаете на скрытом листе умную таблицу из двух колонок. В первой пишете название для выпадающего списка, во второй - имя соответствующего макроса. К обеим колонкам можно обращаться как к именованным диапазонам. Далее макрос считывает название пункта меню и при помощи VLookUp выбирает имя макроса.
Я бы сделал так: создаете на скрытом листе умную таблицу из двух колонок. В первой пишете название для выпадающего списка, во второй - имя соответствующего макроса. К обеим колонкам можно обращаться как к именованным диапазонам. Далее макрос считывает название пункта меню и при помощи VLookUp выбирает имя макроса.МВТ
На любом листе (можно и отдельный выделить, например "имена"), делаем список желаемых наименований макросов. На рабочем листе вставляем форму "выпадающий список", указываем ему "Связь с ячейкой" в которой будет отображаться номер пункта меню. Назначаем форме отдельный макрос в котором, в зависимости от номера пункта меню (в ячейке связи) через Case запускается нужный макрос. Как то так, наверное. ЗЫ: Форму просто копируем на нужные листы.
На любом листе (можно и отдельный выделить, например "имена"), делаем список желаемых наименований макросов. На рабочем листе вставляем форму "выпадающий список", указываем ему "Связь с ячейкой" в которой будет отображаться номер пункта меню. Назначаем форме отдельный макрос в котором, в зависимости от номера пункта меню (в ячейке связи) через Case запускается нужный макрос. Как то так, наверное. ЗЫ: Форму просто копируем на нужные листы.Wasilich
[offtop] Wasilic, подскажите, а почему при исполнении макроса кнопкой цвета меняются мгновенно. А при выборе списком - плавно меняются цвета...?[/offtop]
[offtop] Wasilic, подскажите, а почему при исполнении макроса кнопкой цвета меняются мгновенно. А при выборе списком - плавно меняются цвета...?[/offtop]Roman777
Wasilic, Очень хорошее решение, как раз для моей рабочей книги. Заметил вот какую проблему. Когда поочередно запускаешь макросы, все нормально. Т.е. запустил макрос1, потом нажал запустить макрос2, потом снова нажал макрос1. Все работает. Но когда запускаешь подряд один и тот же макрос, он не выполняется. Т.е. запустил макрос1(макрос выполняется), затем нажал макрос2 (все выполняется), затем нажал еще раз макрос2 (и вот тут то МАКРОС НЕ ВЫПОЛНЯЕТСЯ). Как быть?
Wasilic, Очень хорошее решение, как раз для моей рабочей книги. Заметил вот какую проблему. Когда поочередно запускаешь макросы, все нормально. Т.е. запустил макрос1, потом нажал запустить макрос2, потом снова нажал макрос1. Все работает. Но когда запускаешь подряд один и тот же макрос, он не выполняется. Т.е. запустил макрос1(макрос выполняется), затем нажал макрос2 (все выполняется), затем нажал еще раз макрос2 (и вот тут то МАКРОС НЕ ВЫПОЛНЯЕТСЯ). Как быть?maxexcel
Да, форма запускает макрос при явной смене пункта меню. В таком случае придется обнулять ячейку. В макросе Start() после End Select вставьте Sheets("имена").Range("A1") = 0
Либо вариант: кнопка рядом с формой запускающая тот же макрос "Start".
Да, форма запускает макрос при явной смене пункта меню. В таком случае придется обнулять ячейку. В макросе Start() после End Select вставьте Sheets("имена").Range("A1") = 0
Либо вариант: кнопка рядом с формой запускающая тот же макрос "Start".Wasilich
Сообщение отредактировал Wasilic - Среда, 28.10.2015, 16:08
Wasilic, Класс, просто супер, то что надо! Раз пошла такая "пьянка"))), как увеличить размер шрифта в выпадающем списке? Да, этот вопрос думаю много раз уже обсуждался, но чтобы далеко не ходить, может есть "под рукой" код. [moder]Какое отношение размер шрифта имеет к теме "Запуск макроса из выпадающего списка"? Читаем Правила форума[/moder]
Wasilic, Класс, просто супер, то что надо! Раз пошла такая "пьянка"))), как увеличить размер шрифта в выпадающем списке? Да, этот вопрос думаю много раз уже обсуждался, но чтобы далеко не ходить, может есть "под рукой" код. [moder]Какое отношение размер шрифта имеет к теме "Запуск макроса из выпадающего списка"? Читаем Правила форума[/moder]maxexcel
Сообщение отредактировал Pelena - Среда, 28.10.2015, 16:18