Надстройка предназначена для автоматизации добавления кнопок запуска макроса на лист Excel
Поскольку макросы мне приходится писать очень часто, рисование кнопок их запуска отнимает достаточно много времени.
Решением стало создание этой надстройки - теперь достаточно выделить диапазон ячеек на листе Excel, нажать комбинацию клавиш типа Alt + 1, - и через мгновение на листе создаётся зелёная кнопка с названием «Запуск», расположенная точно поверх ранее выделенных ячеек. Остаётся только назначить этой кнопке макрос, щелкнув по ней правой клавишей мыши.
Пример кода VBA для создания кнопки:
Sub ПримерИспользования() СоздатьКнопку Selection, vbGreen, "Обработать данные": End Sub End Sub
Для вызова формы (где можно настроить текст и цвет будущей кнопки) предназначена комбинация клавиш Ctrl + Alt + Shift + B
Код функции добавления кнопок на лист Excel:
Function СоздатьКнопку(ByRef ra As Range, Optional ByVal ButtonColor As Long = 255, _ Optional ByVal ButtonName$ = "Запуск", Optional ByVal MacroName As String = "") ' Функция рисует автофигуру (прямоугольник) поверх диапазона ячеек ra ' и окрашивает созданную кнопку (с названием ) в цвет Button_color ' Созданной кнопке назначается макрос MacroName On Error Resume Next: Err.Clear w = ra.Width: h = ra.Height: l = ra.Left: t = ra.Top w = IIf(w >= 10, w, 50): h = IIf(h >= 10, h, 50) ' не создаём маленькие кнопки - минимум 10*10 ' добавляем кнопку на лист Dim sha As Shape: Set sha = ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, l, t, w, h) With sha ' оформляем автофигуру .Fill.Visible = msoTrue: .Fill.Solid .Fill.ForeColor.RGB = ButtonColor: .Fill.Transparency = 0.3 .Fill.BackColor.RGB = vbWhite .Fill.TwoColorGradient msoGradientFromCenter, 2 ' градиентная заливка .Adjustments.item(1) = 0.23: .Placement = xlFreeFloating .OLEFormat.Object.PrintObject = False ' кнопки не выводятся на печать .Line.Weight = 0.25: .Line.ForeColor.RGB = vbBlack ' делаем тонкий черный контур With .TextFrame ' добавляем и форматируем текст .Characters.Text = ButtonName$ ' добавляем текст With .Characters.Font ' изменяем начертание текста .Size = IIf(h >= 16, 10, 8): .Bold = True: .Color = vbBlack: .Name = "Arial" ' цвет и шрифт End With .HorizontalAlignment = xlCenter: .VerticalAlignment = xlVAlignCenter End With .onaction = MacroName ' назначаем кнопке макрос (если он задан в параметрах) End With End Function
Комментарии
Я не знаю, про какой VB речь, - этот код для VBA, и там все работает
(можно убедиться в этом, запустив прикрепленный к статье файл)
VB пишет что не поддерживает Set Let
в Set cb = .CommandButton1.ShapeRange
Как быть?
может подскажите
Гениально а можно скриптом добавить кнопку на панель (на ленту )? Очень интерисует этот вопрос, поскольку неоходимо внедрить один проэкт где у всех пользователей должна быть кнопка на панельке Outlook.
Вы просто чудо!
Примерно так это делается:
Все это мило.
Как уже готовый CommandButton1 (ActiveX) Листа "Лист1" программно вписать в ячейку "B2" того же листа (подогнать по размеру; размеры ячейки постоянно меняются, - нужно, чтобы кнопка менялась вместе с ячейкой)
Спасибо...
Списибо, настройка - высший класс!
Проверил - всё работает, файл скачивается.
Ссылка на вложение не работает.
Почему я не видел эту надстройку раньше)))
Отличная штука!
Спасибо!
Отправить комментарий