[VBA][部品]テキストボックスの誤入力を防止

やりたいこと

VBAフォームの懸念事項として、Ctrl + Zで入力を巻き戻すことができない。
そのためなるべくユーザーの誤入力を防止する方法を用意したい。

テキストボックスに対して

  • Enterキーが押されたら、非活性状態にする。
  • ダブルクリックされたら、活性状態にする。

 

 

 

 

ソースコード

' ダブルクリック
Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call Activate(TextBox1, True)
End Sub

' エンターキー押下
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If (KeyCode = vbKeyReturn) Then
        Call Activate(TextBox1, False)
    End If
End Sub

' 活性・非活性切り替え
Private Sub Activate(obj As MSForms.Control, flag As Boolean)
    If (flag) Then
        Select Case TypeName(obj)
            Case "CheckBox"
                obj.Enabled = True
            Case "TextBox"
                obj.Locked = False
                obj.BackColor = RGB(255, 255, 255)
            Case "CommandButton"
                obj.Enabled = True
        End Select
    Else
        Select Case TypeName(obj)
            Case "CheckBox"
                obj.Enabled = False
            Case "TextBox"
                obj.Locked = True
                obj.BackColor = RGB(122, 122, 122)
            Case "CommandButton"
                obj.Enabled = False
        End Select
    End If
End Sub