Sayangnya VBA (hingga versi 2007 yang saya gunakan) tidak memiliki fitur untuk menyaring karakter pada Textboxn-nya. Karena hal tersebut, dalam pembuatan userform, saya terpaksa menambah beberapa perintah tambahan, agar textbox yang saya buat hanya akan menginput angka yang valid.
Private Sub TBRupiah_Change()
'1- Menentukan bentuk koma yang diakui oleh VBA
KomaDiAngka = "."
If 1 & "," & "000" & "." & "01" = 1000 + (1 / 100) = False Then KomaDiAngka = ","
'Menentukan bentuk koma yang diakui oleh VBA -End
'2- Mencegah karakter Non Angka agar bisa Masuk
TBRupiah = Replace(TBRupiah, ",", KomaDiAngka)
TBRupiah = Replace(TBRupiah, ".", KomaDiAngka)
For pengulangan = 1 To Application.WorksheetFunction.Min(Len(TBRupiah), 40)
If IsNumeric(Mid(TBRupiah, pengulangan, 1)) = False And Mid(TBRupiah, pengulangan, 1) <> "-" And Mid(TBRupiah, pengulangan, 1) <> KomaDiAngka Then TBRupiah = Replace(TBRupiah, Mid(TBRupiah, pengulangan, 1), "")
Next pengulangan
'Mencegah karakter Non Angka agar bisa Masuk -End
'3- Mencegah tanda minus yang tidak sesuai kaidah
TBRupiah = Left(TBRupiah, 1) & Replace(Mid(TBRupiah, 2, Len(TBRupiah)), "-", "")
'Mencegah tanda minus yang tidak sesuai kaidah -End
'4 Mencegah desimal yang tidak sesuai kaidah
TBRupiah = Left(TBRupiah, InStr(TBRupiah, KomaDiAngka)) & Replace(Mid(TBRupiah, InStr(TBRupiah, KomaDiAngka) + 1, Len(TBRupiah)), KomaDiAngka, "")
'Mencegah desimal yang tidak sesuai kaidah -End
End Sub