掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
複数テキストボックスでの条件分岐?? (ID:141662)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
まず、御存じのこととは思いますが基本となるIf文の記述方法について振り返ります。 If [評価する式1] Then [命令文1] ElseIf [評価する式2] Then [命令文2] Else [命令文3] End If Ifステートメントでは、[評価する式1]がTrueの場合、[命令文1]が実行されます。 [評価する式1]がFalseならば ElseIf 以降の処理が実行されます。 [評価する式2]がTrueならば[命令文2]が実行され、False(それ以外)の場合[命令文3]が実行されます。 一旦おいといて… ご提示いただいたプログラミングコードでは > If txb41.Text And txb42.Text = True Then とありますが、これは If (txb41.Text And (txb42.Text = True)) Thenと記述した内容とほぼ等価の内容です。 コードデザイナ画面で、txb42.Textに波線が表示されているのはtxb42.TextがString(文字列)型で、Boolean型ではない事が理由です。 CBool(txb42.Text)とすると波線が消えるのは文字列をBoolean型にキャストした事に由来します。 (CBoolの内容については私の方では触れませんのでMSDN等で調べてみる事をお勧めします。) CBool(txb42.Text)と修正すると今度は、txb41.Textに波線が表示されたと思います。 これも、txb41.TextがBoolean型で評価できない為に表示されているのですが、txb42.Text = Trueの時とは少し内容が異なります。 txb42.Textの時は明示的にtxb42.Text = True と式が記述されていますが、txb41.Textには式が記述されていません。 という事は、txb41.Textには評価式が存在しない事になり、これだけに焦点をあてると If txb41.Text Then という記述であると言えます。 最初の方にご説明したように、Ifステートメントでは、 If [評価する式1] Then の結果が正しいか、正しくないか(True or False)で分岐されますので、内部では[評価する式1]はBoolean型で評価されている事になります。 従って、式として成立していないtxb41.TextではBoolean型での評価ができず、波線が表示されてしまう結果となるのです。 以上を踏まえて… txb41.Textとtxb42.Textがどの様な場合にTrueなのかは kentaさんにしか分からない事なのですが、 私ならテキストボックスに数字が入力されていて、しかも数値に置き換えた値が0以上でなくてはならない。とした場合、 If (CDbl(txb41.Text) > 0 And CDbl(txb42.Text) > 0) Then と記述すると思います。 そうなると、kentaさんのコードで > Dim teihen, takasa, syahen, kakudo, kakudo2, kakudo3, kakudo4, radian As Double > > teihen = Val(txb41.Text) > takasa = Val(txb42.Text) と、txb41.Textの文字列とtxb42.Textの文字列を値に変換してDouble型の変数に代入しているので、その変数を使って、 If (teihen > 0 And takasa >0) Then としてもOKだという事になります。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.