if〜then〜endif構文の質問です


regedit  2008-02-03 08:48:48  No: 138799

お世話になります。
Winxp、VB.6です。

オプションボタンの二つを使い分けて、同時に数字を入れて
一定の数値を導き出すコードの質問です。
取り合えず、書いてみたのですが、10000以上だとオーバーフロー
してしまいます。またうまく結論が導きれないようです。
どこを直したら良いのでしょうか?

数量 = Val(Text1.Text)
  
  
  
  If (Option1.Value = True) And (数量 < 10000) Then
  
  合計 = "0"
  
  MsgBox (合計), , "合計"
  
  End If
  
  If (Option1.Value = True) And (数量 = 10000 <= 100000) Then
                                          ↑
                                  このへんがうまくいかないようです。
  合計 = "200"
  
 
  MsgBox (合計), , "合計"
  
    End If


ぶっきい  2008-02-03 19:53:06  No: 138800

>10000以上だとオーバーフローしてしまいます。

という現状観察と

>if〜then〜endif構文の質問です

このような問題点抽出は矛盾していませんか?

問題を解決する第一歩は「問題点はなにか?」をまずつかむことです。


しんご  2008-02-03 21:26:22  No: 138801

たしかに題名と内容が乖離しているのはもちろん問題ですが・・

型宣言はどうなっていますか?
「数量」はInteger型?Long型?

↓こんな感じのプログラムでいかがでしょうか?

Dim n     as Long
Dim RetF  as Boolean
Dim Mess  as String

n = Val(Text1.Text)
RetF = Option1.Value

If RetF Then
  Select Case n
    Case Is < 10000: Mess = "0"
    Case 10000 to 100000: Mess = "200"
  End Select
  MsgBox Mess,,"合計"
End If 

テキストエディタで書いたのでチェックはしていません。
あしからず。


やじゅ  2008-02-03 22:13:55  No: 138802

If (Option1.Value = True) And (数量 = 10000 <= 100000) Then
そもそも構文が変
If (Option1.Value = True) And (数量 <= 100000) Then
でなくて?


regedit  2008-02-18 22:09:18  No: 138803

管理者様、皆さん、有難う御座いました。

しんごさんとやじゅさんのコードをヒントに、コードを
作り直したところ、この件が解決いたしました。

体調が悪く、ご返事が遅れてしまいましたことを
お詫びいたします。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加