やりたいこと
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