【Access VBA】テキストボックスに数字しか入力できないようにする


テキストボックスに数字しか入力できないようにする

標準モジュールに下記のコードを記述します。

Public Function chkNumber(ByVal KeyCode As Integer) As Integer
    Dim Flag As Boolean
    Flag = ((KeyCode >= 48) * (KeyCode <= 57)) _
            + ((KeyCode >= 96) * (KeyCode <= 105)) _
            + (KeyCode = 8) + (KeyCode = 13) + (KeyCode = 9)
    If Flag Then
        chkNumber = KeyCode
    Else
        chkNumber = 0
    End If
End Function

下記サイトを参考にしました。
VBAのTextBoxに半角数字のみ入力したい -VBAでTextBox2には半角数字の- Visual Basic(VBA) | 教えて!goo
テキストボックスのキークリック時のイベントプロシージャに下記コードを記述します。
キー入力時に記述すると「Ctrl」+「V」が有効になってしまうので、キークリック時に記述します。

Private Sub txtSample_KeyDown(KeyCode As Integer, Shift As Integer)
    KeyCode = chkNumber(KeyCode)
End Sub


ショートカットメニューの無効化

以下の手順により右クリックメニューによる「貼り付け」を防止します。
「ファイル」タブの「オプション」をクリック
   ↓
Accessのオプション」ダイアログボックスを表示
   ↓
「カレントデータベース」をクリック
   ↓
「既定のショートカットメニュー」のチェックを外す


テキストボックスのIME入力モードの設定

テキストボックスのIME入力モードを「使用不可」に設定し、入力モードの変更ができないようにします。