Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/75: Рейтинг темы: голосов - 75, средняя оценка - 4.63
2 / 2 / 0
Регистрация: 12.12.2014
Сообщений: 87
1

Как создать макросом UserForm, создать на ней кнопку и привязать к ней макрос?

16.06.2016, 20:25. Показов 14382. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пытаюсь сделать так:

Visual Basic
1
2
3
4
Load MyBar1
Set B = New MyBar1
Set o = B.Controls.Add("Forms.CommandButton.1", "", True)
o.OnAction "Макрос1"
Код на последней строчке выдаёт ошибку (объект не поддерживает этот метод).
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.06.2016, 20:25
Ответы с готовыми решениями:

Макросом создать кнопку и посадить на нее другой макрос
Если эта тема рассматривалась - пните плз в нужную строну.. Ибо уже не могу найти ничего. У меня...

Как привязать кнопку к форме что бы она изменялась вместе с ней?
Делаю игру но не знаю как оптимизировать приложение на весь экран, нашел свойство Anchor но мне...

Создать форму, создать в ней таблицу, которая по нажатию кнопки заполнялась случайными числами
Доброе время суток. Я был бы очень благодарен тем, кто поможет мне разобраться с вот такой...

Как создать БД и работать с ней
Здравствуйте! Я создал сайт, CSS готов. У меня как бюро находок. Если пользователь что то потерял...

3
4082 / 1462 / 401
Регистрация: 07.08.2013
Сообщений: 3,657
16.06.2016, 20:38 2
Ох уж эти хотелки
всем хочется что бы кто-то за них все делал
а теперь собственно вопрос а почему нужно делать програмно форму и на ней кнопку?
почему Вы как проггер не предусматриваете возможных развитий поведения пользователей
0
2 / 2 / 0
Регистрация: 12.12.2014
Сообщений: 87
16.06.2016, 22:48  [ТС] 3
snipe, я хочу добавить этот код в "личную книгу макросов", чтобы он был по умолчанию доступен из любой книги эксель. Далее я запускаю макрос через кнопку на панели быстрого доступа, включаю несколько настроек и в данную книгу эксель добавляется два новых листа и дополнительные возможности, которые будут запускаться с этой самой кнопки.
0
oh my god
1455 / 794 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
18.06.2016, 11:28 4
Лучший ответ Сообщение было отмечено Thor как решение

Решение

Вам просто нужно открыть браузер объектов и узнать, какие объекты поддерживают метод OnAction
там их немного, так вот объект Forms.CommandButton этот метод не поддерживает

Вы можете в событии кнопки выполнить тот или иной макрос

Ниже пример динамического создания кнопки на форме и способы вызова макроса:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Option Explicit
 
Dim WithEvents c As MSForms.CommandButton 'Объявляем кнопку с её событиями
 
Private Sub c_Click()
    '
    'Событие нажатия на неё
    '
    'Варианты вызова макроса
    Application.Run "Макрос1" ', Аргумент1, Аргумент2, Аргумент3, и_т_д
    'Или
    Макрос1 ', Аргумент1, Аргумент2,... '---Прямой вызов макроса
End Sub
 
Private Sub UserForm_Initialize()
    Set c = Controls.Add("Forms.CommandButton.1", "c", 1)
    With c
        .Move 10, 10, 100, 20 '-------- Скрытый метод размерности Move Left, Top, Width, Height
        .Caption = "Нажми сюда"
    End With
End Sub
Можно конечно и форму добавить, только нужно в параметрах безопасности поставить галочку
для разрешения доступа к проект ( в 2003 версии вообще без проблем всё это делается, не знаю
как в других ...)

Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub Добавление_Формы_К_Проекту()
    Dim UserFormNew As Object
    With ThisWorkbook.VBProject.VBComponents
        Set UserFormNew = .Add(3) '3 это форма // 2 - класс // 1 - модуль
        With UserFormNew
            .Name = "UserFormNew"
        End With
    End With
End Sub
Добавлено через 14 часов 56 минут
Вот еще более наглядный пример, где к уже добавленной форме добавляется кнопка и также добавляется код для модуля этой формы где можно указать на макрос и тп

повторюсь что для этих манипуляций нужно чтобы был разрешен доступ к проекту.
Проверить защищен ли проект можно так:
Visual Basic
1
2
3
4
5
If ActiveWorkbook.VBProject.Protection = 1 Then 
   MsgBox "VBProject защищён"
Else
   MsgBox "VBProject не защищён"
End If
Код модуля формы для добавления еще одной формы с кнопкой.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Option Explicit
Dim WithEvents c As MSForms.CommandButton 'Объявляем кнопку с её событиями
 
Private Sub c_Click()
    Dim v
    With ThisWorkbook.VBProject.VBComponents.Add(3)
         .Properties("Width") = 200
         .Properties("Height") = 100
         With .Designer.Controls.Add("Forms.CommandButton.1")
            .Caption = "Нажми сюда"
            .Move 60, 30
         End With
         With .CodeModule
            For Each v In Array( _
                "", _
                "Private Sub CommandButton1_Click()", _
                "    MsgBox ""Нажата CommandButton1""", _
                "End Sub")
                .InsertLines .CountOfLines, v
            Next
         End With
         VBA.UserForms.Add(.Name).Show
    End With
End Sub
 
Private Sub UserForm_Initialize()
    Set c = Controls.Add("Forms.CommandButton.1", "c", 1)
    With c
        .Move 10, 10, 100, 20 '-------- Скрытый метод размерности Move Left, Top, Width, Height
        .Caption = "Нажми сюда"
    End With
End Sub
1
18.06.2016, 11:28
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.06.2016, 11:28
Помогаю со студенческими работами здесь

Как создать БД и оболочку к ней?
В общем, само задание: Разработать инфологическую ER-модель БД согласно варианту. При...

Как создать папку и файл в ней?
Помогите пожалуйста, как создать с помощью Паскаля папку на диске D с названием "Школа", в которой...

JS: Как создать коллекцию объектов и работать с ней?
Хочу создать слайдер, чтобы вызывался одной строкой, а уже в процессе идентифицировались все...

как создать коллекцию и потом с ней работать
Есть в форме несколько контролов (переключателей). Нужно некоторые из них добавить в коллекцию, а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
Как без исключения проверить существование файла в Python
InfoMaster 19.01.2025
При разработке программного обеспечения на Python часто возникает необходимость проверить существование файла перед выполнением операций с ним. Это критически важная задача, которая помогает избежать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru