[リストへもどる]
一括表示

投稿時間:2003/03/04(Tue) 21:33
投稿者名:ひよッこ
URL :
タイトル:
どこがMismatch?
どなたか教えて下さい。


Private Sub Command1_Click()
Dim a As Single
Dim b As Single
Dim c As Single

a = Text1.Text
b = Text2.Text
c = a + b
Text3.Text = c


End Sub

実行すると、下記のようなエラーがでます。
どこが間違いなのかわかりません。

a=Text1.Text
Type mistmatch

よろしくお願いします。

投稿時間:2003/03/04(Tue) 21:54
投稿者名:よねKEN
Eメール:
URL :http://www5b.biglobe.ne.jp/~yone-ken/
タイトル:
Re: どこがMismatch?
> Type mistmatch

下記の「★ - あれー? - VB歴2日目 02/26-04:03 No.2907 」以下の一連の投稿をご覧下さい。
http://www.bcap.co.jp/hanafusa/vbbbs/wforum.cgi?mode=allread&no=2907&page=0

テキストボックスには文字列であれば何でも入れられますから、
その中身がSingle型である保証はありません。

・Single型のデータしか入れられないようにする
・テキストボックスの中身がSingle型と解釈できる値かどうか?をチェックして、
  それ以外のデータが入力されていたら、メッセージボックスなどでその旨を告知して、
  再入力を促す

などの対応をしましょう。

投稿時間:2003/03/05(Wed) 00:17
投稿者名:ひよッこ
URL :
タイトル:
Re^2: どこがMismatch?
> 回答どうもありがとうございます。

  
テキストボックスの中身がSingle型と解釈できる値かどうか?をチェックする方法が
わかりません。
教えていただけますか?


    
>
>

投稿時間:2003/03/05(Wed) 02:49
投稿者名:丸太
Eメール:
URL :
タイトル:
Re^3: どこがMismatch?
> テキストボックスの中身がSingle型と解釈できる値かどうか?
> をチェックする方法が
> わかりません。
> 教えていただけますか?
>
案1)"Mid 関数"や"For キーワード" などを駆使し、
  Text1の文字を1文字ずつ取り出して、小数点を含む数字に
  マッチしているかどうかチェックするコードを書く。

案2)"On Error GoTo"(エラートラップ)を使用して、
   エラーが出た場合はSingle型では無いことにする。
   
3時間もかからずに丸聞きしているアナタには案1を推奨。

投稿時間:2003/03/05(Wed) 06:29
投稿者名:ひよッこ
URL :
タイトル:
Re^4: どこがMismatch?
ありがとうございます。
案1から、試してみます。

投稿時間:2003/03/05(Wed) 12:33
投稿者名:Lantern
Eメール:
URL :
タイトル:
Re^5: どこがMismatch?
Private Sub Command1_Click()
    Dim a As Single
    Dim b As Single
    Dim c As Single

    a = Val(Text1.Text)
    b = Val(Text2.Text)
    c = a + b
    Text3.Text = c

End Sub

Val関数を使うことで解決できると思います。

#VBの勉強中とかであるならば、データ型についてなどは
#知っておいたほうがいいので、参考書なり、WEBサイトなり
#を活用されてはどうでしょうか

投稿時間:2003/03/05(Wed) 16:52
投稿者名:よねKEN
Eメール:
URL :http://www5b.biglobe.ne.jp/~yone-ken/
タイトル:
Re^6: どこがMismatch?
Type mismatchというエラーメッセージから日本語版のVBではないと思われます。

>     a = Val(Text1.Text)
>     b = Val(Text2.Text)

Val関数は国際化対応されていないので、
国によっては、この処理では小数を扱えない可能性があります。

#変なデータでもエラーにならない、"整数+(&や%)"という形の文字列でエラーという問題点もありますがそれはおいといて・・・

投稿時間:2003/03/05(Wed) 18:45
投稿者名:Lantern
Eメール:
URL :
タイトル:
Re^7: どこがMismatch?
> Type mismatchというエラーメッセージから日本語版のVBではないと思われます。
>
> >     a = Val(Text1.Text)
> >     b = Val(Text2.Text)
>
> Val関数は国際化対応されていないので、
> 国によっては、この処理では小数を扱えない可能性があります。
>
> #変なデータでもエラーにならない、"整数+(&や%)"という形の文字列でエラーという問題点もありますがそ
>れはおいといて・・・

なるほどです。
ドイツ・フランス・スペイン等では
"," 小数点
"." 桁区切り
ですね。

"小数+(&や%)については よねKENさんのところにありますね。
IsNumeric等で回避できるのかな。

投稿時間:2003/03/05(Wed) 20:41
投稿者名:ひよッこ
URL :
タイトル:
Re^8: どこがMismatch?
よねKENさん、丸太さん、LANTERNさん
ありがとうございます。

私は、イギリスに住んでいます。最近VB英語版をいただき
基礎から独学中です。国によって違うとは、知りませんでした。
説明不足ですみません。

今朝、掲示板を見て、とても嬉しいです。
心強く勉強できます。
時差にため、返事が遅れるかもしれませんが
今後ともよろしくお願いします。

投稿時間:2003/03/05(Wed) 21:42
投稿者名:よねKEN
Eメール:
URL :http://www5b.biglobe.ne.jp/~yone-ken/
タイトル:
Re^8: どこがMismatch?
> > >     a = Val(Text1.Text)
> > #変なデータでもエラーにならない、"整数+(&や%)"という形の文字列でエラーという問題点もありますがそ
> >れはおいといて・・・

:省略

> "小数+(&や%)については よねKENさんのところにありますね。

フォローありがとうございます。整数ではなく小数でした。
不確かな記憶のまま書いてしまいました。(自分のページ見れば済む話なのに横着でした(^^;)

> IsNumeric等で回避できるのかな。

「数値の判断」が「VBが数値として解釈可能か?という判断」で良ければ、
IsNumericを使うのが簡単ですね。