• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのユーザーフォームについて)

エクセルのユーザーフォームについて

このQ&Aのポイント
  • エクセルのユーザーフォームを使ってパスワード入力用のしかけを作成する方法について説明します。
  • ユーザーフォームにテキストボックスとコマンドボタンを配置し、テキストボックスのPasswordCharを設定することで、パスワードを非表示にします。
  • Enterキーを1回押すだけでユーザーフォームを消す方法についても解説します。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

ユーザーフォーム上のコマンドボタンのプロパティで、Defaultの欄をFalseからTrueに変更すればどうでしょう。 でも、閉じる前にMsgBox "OK!"が出るので、やはり2回になるのでは?

emaxemax
質問者

お礼

ありがとうございました。 なんとそんな簡単なことでOKなんですね。 助かりました。 メッセージボックスの件はその通りでした。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

>ユーザーフォームのコマンドボタンを押してもBeforeUpdateイベントが働く 結果的にはそうなりますが,そういう事ではありません。 フォーム上の他のコントロールをクリックすると,テキストボックスはそれまで自分が持っていたフォーカスを失います(カーソルが外れる)。 その瞬間にテキストボックスに設定したテキストボックスのイベントが起動します。詳細はVBAのヘルプに書いてありますので,必ず目を通してください。(といっても最初はサッパリイミフメイなのはしょうがないことですが) 通常の設定では,EnterやTABキーを押すことでも次のコントロールにフォーカスが移ります。 そのタイミングで,テキストボックスがフォーカスを失う瞬間をとらえてイベントが起動します。 #いつもいつもあれこれ追加で質問されるので,回答をためらいます。

emaxemax
質問者

お礼

重ねてお答えいただきありがとうございます。 > #いつもいつもあれこれ追加で質問されるので,回答をためらいます。 理解力が足りないものでついつい確認してしまいました。 回答を見て新たに浮かんだ疑問は別の質問とすべきということなんですね。 失礼いたしました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

そういう組み込みをしていくと,実際にはコマンドボタンとの仕事の分担はどうするのかとか,フォームを×で閉じたらどうするのかとか色々次々出てきます。 が,まぁそういうのは次の考慮事項として,とりあえず今回ご質問の内容に関しては,これもやり口は色々考えられますが一例としてコマンドボタンに渡す前にテキストボックス自身のイベントで処理します。 作成例: Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)  If Me.TextBox1 = "" Then Exit Sub  If StrConv(Me.TextBox1, vbLowerCase) = "abcd" Then   MsgBox "OK"   Me.TextBox1 = ""   Me.Hide  Else   MsgBox "NG"   Me.TextBox1 = ""   Cancel = True  End If End Sub #NGだったときにテキストボックスにフォーカスを戻す,これが一番カタい手だとワタシは思います。

emaxemax
質問者

お礼

ありがとうございます。 BeforeUpdateイベントとは初めて知りました。 データが変更されたときに働くのですね。 これを使うと、コマンドボタンのプロパティのDefaultはFalseのままで、Private Sub CommandButton1_Clickのコードも書かないのに、エンターキーではなくコマンドボタンを押しても作動しましたが、ユーザーフォームのコマンドボタンを押してもBeforeUpdateイベントが働くというよに考えてよろしいのでしょうか?

関連するQ&A