как насчет этого:
Сначала используйте макрос для вызова вашей пользовательской формы следующим образом:
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
Работает для ваших нужд?