たま氏の覚え書き

KNIME・AccessVBA・Swift等、学習したことを覚え書き

AccessVBA_フォームの操作その5_データの更新前に処理を行う【BeforeUpdate】

フォーム内のデータを更新するタイミングで、何かしらの処理を行う方法

イベント【BeforeUpdate】とは

データ更新の際に発生するイベント
BeforeUpdate - AfterUpdateの順でイベントが発生し、BeforeUpdateイベントではデータ更新のキャンセルが可能なので
入力値が不正である場合を除きたい場合にはBeforeUpdateイベントに記述するとよい

Case.テキストボックスに整数のみ入力してほしい

記述例_フォームのモジュール内のBeforeUpdateイベントに記述▼

Private Sub txt1_BeforeUpdate(Cancel As Integer) '整数を入力してほしい場合
 If IsNumeric(Me.txt1.Value) Then
  If CDbl(Me.txt1.value) = CLng(Me.txt1.value) Then
   Debug.Print "入力値は整数なのでOK"
  Exit Sub
  Else
   Debug.Print "入力値は整数ではないのでやりなおし"
  End If
 Else
  Debug.Print "入力値は数値ではないのでやりなおし"
 End If
 Cancel = True
End Sub


▼処理結果 整数のみ▼

▼処理結果 整数以外の数値▼

▼処理結果 数値以外▼

Case.全角文字のみ入力してほしい場合

記述例_フォームのモジュール内のBeforeUpdateイベントに記述▼

Private Sub txt1_BeforeUpdate(Cancel As Integer) '全角文字のみ入力してほしい場合
    If LenB(Me.txt1.Value) = LenB(StrConv(Me.txt1.Value, vbFromUnicode)) Then
      Debug.Print "入力値は全角文字だけなのでOK"
      Exit Sub
    Else
      Debug.Print "入力値に半角文字が入っているのでやりなおし"
      Cancel = True
    End If
End Sub


▼処理結果 全角文字のみ▼

▼処理結果 半角文字交じり▼


【参考】半角文字だけを入力できるようにしたい場合

▼よくわかる解説記事▼
テキストボックスに入力するデータを半角文字だけで入力するようにしたいとき | Excel活用による業務効率化・業務改善、社員研修・eラーニングならビジネスITアカデミー!
VBAなぞ使わずとも対処はできる