mail mail

Надстройка для программного добавления кнопок на лист Excel

Кнопки на листе Excel, созданные макросом

Надстройка предназначена для автоматизации добавления кнопок запуска макроса на лист 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

ВложениеРазмер
Buttons.xla49.5 КБ

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Проверил - всё работает, файл скачивается.

Ссылка на вложение не работает.

Почему я не видел эту надстройку раньше)))
Отличная штука!
Спасибо!

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
2 + 2 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.