0

私の 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
4

1 に答える 1

0

フォームを開いてデータを入力し、ユーザーの操作なしでフォームを閉じたいですか? なぜわざわざフォームを開く必要があるのでしょうか。

それ以外は、unload me コードを form load イベントまたは form activat イベントの最後に移動するだけです...これは機能しない可能性がありますが、試してみる価値はありますが、残念ながら PC ではテストできません。

于 2013-11-02T09:33:21.450 に答える