私の Excel ブックには、 というユーザー フォームが含まれていますmyUserForm
。私はそれを開き、データを入力し、プログラムでボタンを押したいと思っています。データを入力する TextBoxes には、BeforeUpdate および AfterUpdate ハンドラーがあります。
を呼び出すとCall UserForm2.Show
、これらのイベントは実行されますが、フォームをアンロードできないようです (呼び出すとCall UserForm2.Show
、手動で閉じるまで Excel marco の実行が一時停止します)。
don't を呼び出した場合Call UserForm2.Show
(またはモードレス モードで呼び出した場合)、データの取り込みは問題ありませんが、Excel の BeforeUpdate および AfterUpdate ハンドラーは無視されます。
サンプルコード:
モジュール内:
Public Function s(ByVal newValue As String) As String
'Call UserForm2.Show
UserForm2.TextBox1.Value = newValue
UserForm2.Repaint
s = UserForm2.TextBox1.Value
UserForm2.Button1_Click
End Function
Public Function s2() As String
s2 = s("newValue")
End Function
ユーザーフォーム:
Public Sub Button1_Click()
Unload Me
End Sub
Public Sub TextBox1_AfterUpdate()
TextBox1.Value = TextBox1.Value + "y"
End Sub