即効テクニック |
ユーザーからパスワードを入力してもらうようなUserFormがあったとします。 UserForm上にはテキストボックスとコマンドボタンが1つずつ配置されています。 コマンドボタンがクリックされたら、入力されたパスワードが正しいかどうか判定します。 ここでは、正しいパスワードが"Password"だとします。 コマンドボタンに登録するマクロは、次のようになります。Private Sub CommandButton1_Click() If TextBox1.Text = "Password" Then MsgBox "OK" Else MsgBox "パスワードが間違っています" End If End Sub判定するだけなら、これでもいいですね。 しかし、もしユーザーがパスワードを打ち間違えたとき、ただ「間違っています」とメッセージを表示するだけでは、使い勝手の良いシステムとは言えません。 ユーザーが正しいパスワードを入力し直すには、もう一度テキストボックスをクリックしてアクティブにし、先に入力した誤ったパスワードを削除し、新たに正しいパスワードを入力しなければいけません。 一般的なWindowsのアプリケーションでは、こんなとき、自動的にテキストボックスへフォーカスが移り、それまで入力されていた文字列が選択状態になります。 この仕組みを実現してみましょう。 テキストボックスにフォーカスを移すには、SetFocusメソッドを使います。Private Sub CommandButton1_Click() If TextBox1.Text = "Password" Then MsgBox "OK" Else MsgBox "パスワードが間違っています" TextBox1.SetFocus End If End Sub次に、テキストボックスに入力された文字列全体を選択状態にします。 テキストボックス内の文字列を選択状態にするには、次のプロパティを使います。 SelStartプロパティ:選択の先頭位置を指定します SelLengthプロパティ:選択されている文字数を指定します 文字列全体を選択状態にするなら、選択の先頭位置は0になります。Private Sub CommandButton1_Click() If TextBox1.Text = "Password" Then MsgBox "OK" Else MsgBox "パスワードが間違っています" With TextBox1 .SetFocus .SelStart = 0 End With End If End Sub選択する文字数は、入力されている文字列によって異なります。 入力されている文字列の文字数は、Len関数でわかります。 そこで、選択する文字数は次のように指定します。Private Sub CommandButton1_Click() If TextBox1.Text = "Password" Then MsgBox "OK" Else MsgBox "パスワードが間違っています" With TextBox1 .SetFocus .SelStart = 0 .SelLength = Len(.Text) End With End If End Sub小さな配慮が、使い勝手を大きく改善します。