もどる

 数値か否か(関数:IsNumeric) その2
HOMEへ
PRODUCTSへ
LEARNING
LINKへ
LOGO
HeadLine
ORDER FORMへ
Image画像
MailTo:

もどる


VBA World
E-Mail:info@vba-world.com
 数値か否か(関数: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
(ファンクションプロシージャを使用していないバージョン)