Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9089 / 13644 ツリー ←次へ | 前へ→

【29394】算術式のデータ型 toki 05/10/4(火) 12:48 質問[未読]
【29395】Re:算術式のデータ型 年寄り 05/10/4(火) 13:10 発言[未読]
【29407】Re:算術式のデータ型 toki 05/10/4(火) 15:21 お礼[未読]
【29397】Re:算術式のデータ型 Jaka 05/10/4(火) 13:41 発言[未読]
【29406】Re:算術式のデータ型 toki 05/10/4(火) 15:20 お礼[未読]

【29394】算術式のデータ型
質問  toki  - 05/10/4(火) 12:48 -

引用なし
パスワード
   こんにちは。tokiと申します。教えてください。

ユーザーフォームにて、テキストボックスが3つあるとします。
ウェイト1
ウェイト2
ウェイト3

このとき、
1.各テキストボックスに未入力時はエラーを出す。
2.各テキストボックスの数値合計が100以外のときはエラーを出す。
というコードを記述しています。

しかし、合計が100になる数値を入れても処理がすすまず、エラーが出てしまいます。
デバッグで変数の格納値を見てみたところ、 Goukei = Wcomi + Wcomp + Wvalueのところが文字列の結合になってしまってました。
つまり
ウェイト1=50
ウェイト2=30
ウェイト3=20
Goukei=503020
という状況です。

そこで、変数のデータ型をByte型に変更してみました。
しかし、「データ型が一致しません」というエラーが出てしまいます。
黄色反転個所⇒ If Wcomi = "" Then

どこがまずいのでしょうか?

**************************************************************************************

Private Sub 登録ボタン_Click()
  
  'ウェイト
  Dim Wcomi As Variant
  Dim Wcomp As Variant
  Dim Wvalue As Variant
  Dim Goukei As Variant

  Wcomi = ウェイト1.Text
  Wcomp = ウェイト2.Text
  Wvalue = ウェイト3.Text
  Goukei = Wcomi + Wcomp + Wvalue
  
  'テキストBOXが空白の場合は、登録できないようにする。
  If Wcomi = "" Then
    MsgBox "ウェイト1を入力してください。", vbExclamation, "登録できません。"
  Exit Sub
  ElseIf Wcomp = "" Then
    MsgBox "ウェイト2を入力してください。", vbExclamation, "登録できません。"
  Exit Sub
  ElseIf Wvalue = "" Then
    MsgBox "ウェイト3を入力してください。", vbExclamation, "登録できません。"
  Exit Sub

  ElseIf Goukei <> 100 Then
    MsgBox "ウェイト合計は100になるように設定してください。", vbExclamation, "登録できません。"
  Exit Sub
  
  Else
    '処理
  
  End If

【29395】Re:算術式のデータ型
発言  年寄り E-MAILWEB  - 05/10/4(火) 13:10 -

引用なし
パスワード
   ▼toki さん:
私もこのことで苦労したことがあります。

お解りの通りTextBoxの値は文字列です。
CLng(TextBox1.Text)
で数値Long型に変換できます。

【29397】Re:算術式のデータ型
発言  Jaka  - 05/10/4(火) 13:41 -

引用なし
パスワード
   ▼toki さん:
>  'ウェイト
>  Dim Wcomi As Variant
>  Dim Wcomp As Variant
>  Dim Wvalue As Variant
>  Dim Goukei As Variant
>
>  Wcomi = ウェイト1.Text
>  Wcomp = ウェイト2.Text
>  Wvalue = ウェイト3.Text
>  Goukei = Wcomi + Wcomp + Wvalue

なんでTextプロパティを使う人が多いんだろうか?
Val変換しても良いですよ。
ただ、全角数字は使えなくなるけど...。

>  Wcomi = Val(ウェイト1.value)
>  Wcomp = Val(ウェイト2.value)
>  Wvalue = Val(ウェイト3.value)

【29406】Re:算術式のデータ型
お礼  toki  - 05/10/4(火) 15:20 -

引用なし
パスワード
   ▼Jaka さん:
ありがとうございます。動作いたしました。
またよろしくお願いします。

【29407】Re:算術式のデータ型
お礼  toki  - 05/10/4(火) 15:21 -

引用なし
パスワード
   ▼年寄り さん:
ありがとうございます。

9089 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free