- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【Excel VBA】UserForm上のTextBoxについて)
【Excel VBA】UserForm上のTextBoxについて
このQ&Aのポイント
- UserForm上に配置されたTextBoxでEnterが反応しない場合がある
- Enter自体は反応するが、一部の場合のみ反応しない
- 原因が特定できず、再現性もない
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
UserFormにTextBoxは幾つありますか? もしくは他にフォーカス可能なコントロールがあるのですよね? 通常、IMEoff状態ではEnterキーKeyDownで次のコントロールに移ります。 例えばTextBox1からTextBox2に移る設定の時、 Enter KeyDownはTextBox1_KeyDownイベント、 Enter KeyUpはTextBox2_KeyUpイベントが発生する事になります。 それが原因でないなら、状況説明が不足しています。 UserFormに配置しているコントロールの種別と数、 それに少なくともKeyUpイベントの中身全文の提示は必要です。 毎度毎度推理するのは正直言って疲れます。 :D もうちょっと配慮お願いします。
お礼
自己解決しました。 UserForm呼び出し時の Application.EnableEvents = True の記述位置が間違っていたことによるものでした。 お手数をおかけしました。
補足
すみません。補足をします。 UserForm上にはTextBoxは1つ、あとはLabelが1つあるだけです。 また、UserFormは1つしかありません。 以下はKeyUp関数関連の全文です。 Option Explicit Const PASS1 As String = "1234" Const PASS2 As String = "1234" Const PASS_DEV As String = "test" Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Dim i As Integer Dim x As Integer If KeyCode.Value <> vbKeyReturn Or TextBox1.Value = "" Then Exit Sub If TextBox1.Value = PASS1 Or TextBox1.Value = PASS2 Then UserForm1.Hide Call 開始設定 Call ブック解錠 With ThisWorkbook For i = 1 To .Worksheets.Count .Worksheets(i).Visible = True Call 解錠(.Worksheets(i).Name, "ulp") Next .Worksheets(.Worksheets.Count).Visible = False End With Call ブック施錠 ThisWorkbook.Worksheets(1).Activate ' Call ClearField x = ReadFile() Call 終了設定 Call 開始設定 Call 管理表情報(False) Call 終了設定 Cells(x, 1).Select ElseIf TextBox1.Value = PASS_DEV Then UserForm1.Hide Call 開始設定 Call ブック解錠 With ThisWorkbook For i = 1 To .Worksheets.Count .Worksheets(i).Visible = True Call 解錠(.Worksheets(i).Name, "ulp") Next .Worksheets(.Worksheets.Count).Visible = True .Worksheets(1).Activate End With Call ブック施錠 Call 終了設定 Else Call MsgBox("パスワードが違います", vbExclamation, "確認してください") TextBox1.Value = "" End If End Sub 入力値が PASS1かPASS2に合致、PASS_DEVに合致、どれにも一致しないの 3通りしかない中で、 UserFormがHideすることもなく パスワードが違うとのダイアログが出ることもありません。