This works fine for me.
Here's the form (unbound)

Here's the VBA
Code:
Option Compare Database
Option Explicit
Private Sub CE_Click()
CurrentTextBox = Null
End Sub
Private Sub Num0_Click()
If Not CurrentTextBox Is Nothing Then
CurrentTextBox.Value = CurrentTextBox.Value & "0"
End If
End Sub
Private Sub Num1_Click()
If Not CurrentTextBox Is Nothing Then
CurrentTextBox.Value = CurrentTextBox.Value & "1"
End If
End Sub
Private Sub Num2_Click()
If Not CurrentTextBox Is Nothing Then
CurrentTextBox.Value = CurrentTextBox.Value & "2"
End If
End Sub
Private Sub Num3_Click()
If Not CurrentTextBox Is Nothing Then
CurrentTextBox.Value = CurrentTextBox.Value & "3"
End If
End Sub
Private Sub Num4_Click()
If Not CurrentTextBox Is Nothing Then
CurrentTextBox.Value = CurrentTextBox.Value & "4"
End If
End Sub
Private Sub Num5_Click()
If Not CurrentTextBox Is Nothing Then
CurrentTextBox.Value = CurrentTextBox.Value & "5"
End If
End Sub
Private Sub Num6_Click()
If Not CurrentTextBox Is Nothing Then
CurrentTextBox.Value = CurrentTextBox.Value & "6"
End If
End Sub
Private Sub Num7_Click()
If Not CurrentTextBox Is Nothing Then
CurrentTextBox.Value = CurrentTextBox.Value & "7"
End If
End Sub
Private Sub Num8_Click()
If Not CurrentTextBox Is Nothing Then
CurrentTextBox.Value = CurrentTextBox.Value & "8"
End If
End Sub
Private Sub Num9_Click()
If Not CurrentTextBox Is Nothing Then
CurrentTextBox.Value = CurrentTextBox.Value & "9"
End If
End Sub
'NOTE: fixes bug in your published code which will not allow leading decimal point
'Unclear if this is your original complaint
Private Sub NumDecimal_Click()
If CurrentTextBox & "" = "" Then
CurrentTextBox = "0."
Else
If InStr(CurrentTextBox.Value, ".") = 0 Then
CurrentTextBox.Value = CurrentTextBox.Value & "."
End If
End If
End Sub