結論:原因の多くは「Null」「イベントのタイミング」「参照方法」
Accessで
TextBox.Value が取れない空になる型が一致しませんが出る
といった現象が起きる場合、原因のほとんどは次の3つです。
TextBox が Null のまま
イベントのタイミングが早すぎる
参照方法を勘違いしている
VBA自体の不具合ではなく、
Access特有の仕様を理解していないことが原因です。
よくある症状
値が入力されているのに
Valueが空フォームを開いた直後に取得すると Null
ボタンを押すとエラーになる
Debug.Print すると何も表示されない
原因①:TextBox が Null(未入力)
Accessでは、TextBoxが未入力の場合
空文字(“”)ではなく Null になります。
Debug.Print Me!Text0.Value ‘ ← Null
対処:Nz関数で必ずガードする
Dim s As String
s = Nz(Me!Text0.Value, “”)
数値なら:
Dim n As Long
n = CLng(Nz(Me!Text0.Value, 0))
👉 Valueを使う前にNz
これだけでトラブルの大半は防げます。
原因②:イベントのタイミングが早すぎる
Accessでは、
イベントごとにValueの確定タイミングが違います。
よくあるNG例
Private Sub Text0_Change()
Debug.Print Me!Text0.Value
End Sub
Change イベントでは、
入力途中の状態のため、期待通りに取れないことがあります。
おすすめのイベント
AfterUpdate:入力確定後
LostFocus:フォーカスが外れた後
ボタンClick:確実
Private Sub Text0_AfterUpdate()
Debug.Print Me!Text0.Value
End Sub
👉 「いつ値が確定するか」を意識するのが重要です。
原因③:参照方法の勘違い
Accessでは、次の書き方はすべて有効ですが、
混在させると分かりにくくなります。
Me!Text0.Value
Me.Text0.Value
Forms!Form1!Text0.Value
おすすめ
同一フォーム内 →
Me!Text0.Value他フォーム参照 →
Forms!フォーム名!Text0.Value
👉 曖昧な書き方は避け、
状況に合った参照方法に統一しましょう。
原因④:Enabled / Visible / Locked の影響
TextBoxの状態によっては、
値は見えていても取得に影響が出ることがあります。
確認ポイント
Visible = False → 取得できない
Enabled = False → 取得はできるが注意
Locked = True → 取得は可能
まずは Visible=True で動作確認すると切り分けが楽です。
原因⑤:Value を省略して混乱している
Accessでは Value は省略可能です。
Me!Text0 = “test”
ただし、
初心者〜中級者のうちは 明示的に書く方が安全です。
👉 可読性とトラブル回避のためにも
Valueは省略しないのがおすすめです。
安全な取得の基本形(おすすめ)
実務で一番安全なのがこの形です。
Dim v As Variant
v = Nz(Me!Text0.Value, “”)
数値の場合:
Dim n As Long
n = CLng(Nz(Me!Text0.Value, 0))
それでも取得できない時のチェックリスト
TextBoxは Nullではないか
AfterUpdate / Click で取得しているか
参照方法は正しいか
Visible / Enabled の状態
型変換前に Nz しているか
まとめ
TextBox.Value が取れない原因は Null が最多
イベントのタイミングを間違えない
参照方法を統一する
Nz + 型変換が基本形
👉 Valueが取れない=Accessの仕様を疑う
👉 VBAの文法ミスではないことがほとんどです。
内部リンク
Access VBAでClipboardを扱う最も簡単な方法(64bit対応・API不要)

