数値か否か(関数:IsNumeric) その1 の応用編です。実際のプログラミングでどのように使用するのかを確認してください。
他にも方法があると思いますので、いろいろ挑戦してみてください。 |
| 数値か否か 応用その1 |
次のようなフォームを想定する。
テキストボックス名は上から TextBox1、TextBox2、TextBox3 とする。

プログラムは次の内容で記述。
Option Explicit
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Me.TextBox1.Value = "" Then Exit Sub
If Not IsNumeric(Me.TextBox1) Then
MsgBox "数値を入力してください"
Cancel = True
Me.TextBox1.SetFocus
Exit Sub
End If
Me.TextBox1.Value = Format(Me.TextBox1.Value, "#,###")
Keisan
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Me.TextBox2.Value = "" Then Exit Sub
If Not IsNumeric(Me.TextBox2) Then
MsgBox "数値を入力してください"
Cancel = True
Me.TextBox2.SetFocus
Exit Sub
End If
Me.TextBox2.Value = Format(Me.TextBox2.Value, "#,###")
Keisan
End Sub
Private Sub Keisan()
If Me.TextBox1.Value <> "" And Me.TextBox2.Value <>
"" Then
Me.TextBox3.Value = Me.TextBox1 * Me.TextBox2
Me.TextBox3.Value = Format(Me.TextBox3.Value, "#,###")
End If
End Sub
|
|
| ここまでのエクセルファイル ⇒ isnumeric_1.xls |
|
| 数値か否か 応用その2 |
上記、応用その1では、プログラム内容を見ると多くの部分がダブって記述されてる。これをまとめて簡略化したプログラムを次に紹介する。
プログラムの記述は簡略化しているが、内容はちょっと高度になっている。 |
次のようなフォームを想定する。
テキストボックス名は上から TextBox1、TextBox2、TextBox3 とする。

プログラムは次の内容で記述。
Option Explicit
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If InputCheck(Me.TextBox1) Then Keisan Else Cancel = True
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If InputCheck(Me.TextBox2) Then Keisan Else Cancel = True
End Sub
Private Function InputCheck(objObject As Object) As Boolean
If objObject.Value = "" Then
InputCheck = True
Exit Function
End If
If Not IsNumeric(objObject) Then
MsgBox "数値を入力してください"
InputCheck = False
objObject.SetFocus
Exit Function
End If
TextBoxFormat objObject
InputCheck = True
End Function
Private Sub TextBoxFormat(objObject As Object)
objObject.Value = Format(objObject.Value, "#,###")
End Sub
Private Sub Keisan()
If Me.TextBox1.Value <> "" And Me.TextBox2.Value <>
"" Then
Me.TextBox3.Value = Me.TextBox1 * Me.TextBox2
TextBoxFormat Me.TextBox3
End If
End Sub
|
|
| ここまでのエクセルファイル(その1) ⇒ isnumeric_2.xls |
ここまでのエクセルファイル(その2) ⇒ isnumeric_3.xls
(ファンクションプロシージャを使用していないバージョン) |