プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
下記のコードですが
If TextBox1.Value <> "" And TextBox2.Value <> "" Then
TextBox3.Value = TextBox1 * TextBox56
End If

テキストボックス1に -5を入力
テキストボックス2に  5を入力
テキストボックス3が -25になります。

今度は
テキストボックス1に 5を入力
テキストボックス2に -5を入力しようとすると、-を入力した時点でデバックとなります。

数 × -数 を行いたいのですが、
どのようにしたらよいのでしょうか?
教えて下さい。

ちなみに、テキストボックス2から、-5を入力するとデバックしません。

宜しくお願い致します。

A 回答 (5件)

<>””だとNULLで無い、と判定ている。


数字かどうかで判定する。

If IsNumeric(TextBox1.Value) And IsNumeric(TextBox2.Value) Then
TextBox3.Value = TextBox1 * TextBox2
End If
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます。

If IsNumeric(TextBox8.Value) And IsNumeric(TextBox10.Value) Then
TextBox11.Value = TextBox8 * TextBox10
myTH1 = TextBox8.Value * TextBox10.Value
ElseIf TextBox8.Value = "" Or TextBox10.Value = "" Then
TextBox11.Value = ""
myTH1 = 0
End If

マイナスが入りました。
本当に助かりました。

ありがとうございます

お礼日時:2016/07/01 14:26

こんな感じではいかがですか?


-----------------------------------------------------
Private Sub TextBox1_Change()
If IsNumeric(TextBox1.Value) Then
If IsNumeric(TextBox2.Value) Then
TextBox3.Value = TextBox1.Value * TextBox2.Value
End If
End If
End Sub
-----------------------------------------------------
ちなみになぜエラーになったかと言うと、Change イベントは1文字づつイベントが発生してしまうため「-」だけでもイベントが発生してしまい「-」では計算が出来ないためです。またなぜ最初に「-」の方はエラーにならなかったかと言うとテキストボックス2が空欄だったため計算されなかったためです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

エラーの原因を解説頂き、ありがとうございます。
納得致しました。

お礼日時:2016/07/01 14:28

Change()イベントに書いているなら当たり前ですね。


「-」は数値ではありませんから。

せめてこれくらいはすればどうでしょうか。

Private Sub TextBox1_Change()
 If TextBox1.Value = "" Or TextBox2.Value = "" Then
  Exit Sub
 End If
 If Not IsNumeric(TextBox1.Value) Or Not IsNumeric(TextBox2.Value) Then
  Exit Sub
 End If

 TextBox3.Value = TextBox1.Value * TextBox2.Value
End Sub

とかにしとけばいいのでは。

この場合、「.1」、「-.1」、更には全角数字も数値とみなします。
また、入力値に、特定の桁数までという制御がないので、結果が15桁を超えると「1E+15」などという結果になります。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

全角数字も数値とみなすのは、とても都合が良いです。

本当にありがとうございました。

お礼日時:2016/07/01 14:34

TextBox3.Value = TextBox1 * TextBox1 を



TextBox3.Value = TextBox1.Value * TextBox2.Value
にしては、どうでしょうか。
こちらで、確認するとTextBox1にマイナスの値をいれても、TextBox2にマイナスの値をいれても
何れも正常に動作します。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
全文書かなくてすみません。

Private Sub TextBox1_Change()

If TextBox1.Value <> "" And TextBox2.Value <> "" Then
TextBox3.Value = TextBox1.Value * TextBox2.Value
End If

これですと、デバックになりました。
ただ、参考になりました。
ありがとうございます。

お礼日時:2016/07/01 14:24

念のため確認ですが


「TextBox3.Value = TextBox1 * TextBox56」は「TextBox3.Value = TextBox1.Value * TextBox2.Value」の転記ミスですよね。
    • good
    • 0
この回答へのお礼

ありがとうございます。
4行目は
TextBox3.Value = TextBox1 * TextBox2
の間違いです。

Private Sub TextBox1_Change()
 If TextBox1.Value <> "" And TextBox2.Value <> "" Then
  TextBox3.Value = TextBox1 * TextBox1
End If
End Sub

Private Sub TextBox2_Change()
 If TextBox1.Value <> "" And TextBox2.Value <> "" Then
  TextBox3.Value = TextBox1 * TextBox1
End If
End Sub

こんな書き方をしています。

宜しくお願い致します。

お礼日時:2016/07/01 13:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A