Excel VBA - Добавить новую процедуру от VBA - PullRequest
0 голосов
/ 09 мая 2018

Я создал пользовательскую форму, которая просит пользователя заполнить 3 параметра (текстовое поле) + с кнопкой ОК.

У меня также есть подпроцедура, public sub Analyze (actionName as String, endStr as String, startStr as String) который я называю с разными параметрами.

Мне бы хотелось, чтобы после нажатия на кнопку «ОК» в моей пользовательской форме была создана новая кнопка (это легко сделать с помощью activesheet.buttons.add), и она будет назначена новому макросу - процедуре анализа с параметрами из Форма пользователя -> поэтому мне нужно каждый раз создавать новую подпрограмму, вызывающую Анализ подпрограммы с другими параметрами.

Возможно ли это? как я могу это сделать?

1 Ответ

0 голосов
/ 09 мая 2018

как насчет этого:

Сначала используйте макрос для вызова вашей пользовательской формы следующим образом:

Sub CallUF()
     Call UserForm1.Show(vbModeless)'Change name of UserForm1 accordingly
End Sub

Откроется ваша пользовательская форма. Вы можете заполнить свои параметры и нажать кнопку ОК. Используйте код ниже, чтобы сделать кнопку на вашем листе (код, который я добавил в первой версии ответа).

Sub Macro2nwShape ()

Dim nwShape As Shape
Set w = ActiveSheet
Set nwShape = w.Shapes.AddShape(1, 10, 10, 50, 50) '<- Will be a rectangle
nwShape.OnAction = "Analyze" '<- Part where you assign the macro to your new shape

End Sub

Теперь вы увидите, что можете работать с рабочим листом, пока ваша пользовательская форма все еще отображается. Поэтому нажатие вашей кнопки на листе вызовет ваш вспомогательный анализ и будет работать с параметрами из вашей пользовательской формы. Таким образом, вам не нужно их где-то хранить.

Я пытался назвать это так:

Sub Analyze()

MsgBox UserForm1.TextBox1.Value & " " & UserForm1.TextBox2.Value & " " & UserForm1.TextBox3.Value

End Sub

Работает для ваших нужд?

...