• ベストアンサー

VBSによるプログラミングでif構文の条件の設定方法について

VBSによるプログラミングでif構文の条件の設定方法について if構文を作る際の条件設定で 例:電圧を条件に取りたい場合 elseif (voltage>5 and voltage<=(10+x)) then の様にして、条件の中に「(10+x)」の様に関数や計算式を入れることは可能なのでしょうか? 何故かここの部分だけ動かないという状態に陥ってしまいました。 ちなみに、(10+x)の部分に整数である20などを入れると、正常に動く為、ここのスクリプトがおかしいのだと思っています。

  • kkzd5
  • お礼率60% (12/20)

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

>(10+x)の部分に整数である20などを入れると、正常に動く為 >ここのスクリプトがおかしいのだと思っています。 そこがおかしいかどうかは 次のような単純なコードで確認できますよね。 -------------------------------------------- Dim x, voltage x = 20 voltage =15 If voltage <= 5 Then MsgBox voltage & "。。。<=5" ElseIf (voltage > 5 And voltage <= (10 + x)) Then MsgBox voltage & "。。。5>and<=(10+" & x & ")" Else MsgBox voltage & "。。。>(10+" & x & ")" End If -------------------------------------- 何れにしろ、(10+X)が原因ではないことだけは確かですから voltage,xの値、ifの流れを念入りにチェックしてみたらどうでしょう。 以上です。

関連するQ&A

  • IF VBA 1つの条件で複数の処理

    IF関数で、1つの条件(セルに特定の文字があったら) セルA1=B1+C1 セルB1=D1+E1 のように2つの処理を行ないたい場合、どんな構文を作成 したらいいでしょうか。 IF~Then ElseIf~Then End If というのが基本構文ですが、条件が複数あるのではなく 条件1つで処理は2つというのが分かりません。

  • 条件に従ってセルに入力の構文の簡素化

    よろしくお願いします。 ComboBox4の値を条件(20行づつ下)に従ってセルに入力するのですが 構文の簡素化はできないでしょうか With Worksheets("写真") If ComboBox5.Value = "1" Then .Range("R34").Value = ComboBox4.Value ElseIf ComboBox5.Value = "2" Then .Range("R54").Value = ComboBox4.Value ElseIf ComboBox5.Value = "3" Then .Range("R74").Value = ComboBox4.Value ElseIf ComboBox5.Value = "4" Then .Range("R94").Value = ComboBox4.Value ~ ElseIf ComboBox5.Value = "48 Then .Range("R994").Value = ComboBox4.Value ElseIf ComboBox5.Value = "49" Then .Range("R1014").Value = ComboBox4.Value ElseIf ComboBox5.Value = "50" Then .Range("R1034").Value = ComboBox4.Value End If

  • IFの構文で

    IF の構文を作っていますが Cells(p, 6) がブランクのとき何もしない Cells(p, 6)<= If Cells(p, 7) とき何もしない Cells(p, 6)< If Cells(p, 7) とき その列を削除する という文にしたいのですがうまくできません 自分なりに以下つくったのですが.... お教えいただければと思い投稿しました、どうぞよろしくお願いします。 Sub 削除() Dim p As Long Sheets("前P").Select For p = 200 To 7 Step -1 ’なにもしないで次の処理へ行く ここがうまくいかない If Cells(p, 6) = " " Then   ElseIf Cells(p, 6) < Cells(p, 7) Then Range(Cells(p, 2), Cells(p, 20)).Select Selection.Delete Shift:=xlUp End If Next p End Sub うまくいかないのは上記の構文だとブランクも削除の対象と なってしまうところです。 うまくブランクは残して実行する方法を教えていただきたいのですがよろしくお願いいたします。 .

  • VB IF なぜ構文エラーにならないのですか?

    Dim x, y, z As Integer x = 1 y = 1 z = 1 If x = y And y = z Then MessageBox.Show("OK") End If 3つの値が同じならアラートを出したいのです。このソースでできるかとおもいます。。。 しかし・・・・ If x = y = z Then MessageBox.Show("OK") End If とするとアラートが出ません。関数的に使い方が間違っているのでしょうか? もしそうならなぜ構文エラーが出ないのでしょうか? よろしくお願いします。 言語Microsoft Visual Basic 2008 Express Edition

  • if [ 条件式 ]とif[[ 条件式 ]]

    シェルスクリプトでのif [ 条件式 ] と if [[ 条件式 ]] の違いについて教えてください。 以下のシェルスクリプトを実行すると、 意図したとおり、111 と出力されます。 =========▼▼(ここから)▼▼========= #!/bin/sh AAA=yes if [[ "$AAA" = [yY]* ]] then echo 111 else echo 222 fi =========▲▲(ここまで)▲▲========= 上記、スクリプト3行目の if [[ "$AAA" = [yY]* ]] の部分を if [ "$AAA" = [yY]* ] というように、角カッコ 1重にすると、 エラーは発生しませんが、 222と表示されます。 if [ 条件式 ] と if [[ 条件式 ]] の違いについて教えていただけないでしょうか。

  • IFステートメントの条件式が間違っているのでしょうか?

    エクセルVBA初心者です。下記の式を作りましたが、計算した結果が正しい答えになりません。構文エラーが出ないので構文は間違ってはいないと思うのですが、答えが違うので参っています。どなたか何が間違っているのかおしえて下さい。よろしくお願いします。 Cells(6, "E") にある数字時を入れた時の答えをCells(6, "G") に求めるものです。 Sub 計算() Dim my As Long If Cells(6, "E") <= 90 Then my = 50000 * Cells(6, "E") / 30 Cells(6, "G") = my ElseIf 90 < Cells(6, "E") <= 120 Then my = 50000 + 40000 * (Cells(6, "E") - 90) / 30 Cells(6, "G") = my ElseIf 120 < Cells(6, "E") <= 150 Then my = 90000 + 30000 * (Cells(6, "E") - 120) / 30 Cells(6, "G") = my ElseIf 150 < Cells(6, "E") <= 180 Then my = 120000 + 20000 * (Cells(6, "E") -150) / 30 Cells(6, "G") = my ElseIf 180 < Cells(6, "E") <= 210 Then my = 140000 + 10000 * (Cells(6, "E") -180) / 30 Cells(6, "G") = my End If End Sub

  • if文の条件分岐

    お世話になっております。 VBについて初心者なので、参考書を見て勉強しております。 if文の条件分岐についてイメージが出来なくて困っています。 例えば、 (1)Windows XPのインストールのVBS、パラメーター用のbat (2)Windows VistaのインストールのVBS、パラメーター用のbat があるとします。 if文を使って、VBSを開いた時に(1)か(2)の分岐を選択するように書くには「if・・・Then・・・Else」を使って書くのが良いのでしょうか? 勉強不足で自己解決ができません・・・ 宜しく御願いします。

  • VBSで・・・

    技術者向けって感じではないんですけど、[技術者向] コンピューター カテゴリにしかプログラミングがなかったもんで・・・。 まだまだ初心者のなかの初心者ですが、最近vbsを覚え始めました。 え~っと、 x=inputbox("○○") if x=条件式 then 実行文 else 実行文 if文なのかな? 上の文で、 if x=条件式 thenの 条件式のところの質問です。 そこで、 if x=この部分を教えて下さい。 then 上の形式で、変数xに、もし、○○という文字列を含んでいたら、○○を表示するという文を教えて下さい。 よろしくお願いします。

  • 【VBA】IF構文の条件式で範囲が同一の場合

    いつもこちらの識者の方々にはお世話になっています。 VBAの質問です。 IF構文でorを使って複数条件を指定したいのですが、下記のような場合、冗長な気がします。 Sub test() IF Left$(Cells(1, 1), 1) = "あ" or Left$(Cells(1, 1), 1) = ”い" or Left$(Cells(1, 1), 1) = ”う" Then Cells(1, 1).EntireRow.Delete End Sub 条件式で範囲が同一の場合、例えば IF Left$(Cells(1, 1), 1) = ”あ","い","う" Then Cells(1, 1).EntireRow.Delete のように、もっとスッキリした記述方法はありますでしょうか。

  • ifでの条件分岐

    .net vb2005でプログラミングしています。 2つのテキストボックスがあり、その名前をtextbox1,textbox2 , 変数の代入をtx1、tx2とします。 どちらも半角数字で300までしか入力できません。 さらに、tx1に入力されるとtx2も必ず入力される必要があります。 tx1が未入力の場合はtx2も未入力である必要があります。 最初にtx1の文字数が0か確認し、入っている場合、居ない場合と ifで条件分岐させましたが うまくいきません。。 アドバイスいただきたいと思います。 Dim tx1,tex2 As Integer If Len(TextBox1.Text) = 0 Then flg = 0 ElseIf Regex.IsMatch(TextBox1.Text, "^[0-9]{1,3}$") Then tx1= Val(TextBox1.Text) tx1 = Convert.ToInt32(iptx5) '文字列をInteger型(数字型)に変換 Else MsgBox("300までの数字で入力して下さい", vbCritical, "入力エラー") TextBox1.Clear() Exit Sub End If If tx1 > 255 Then flg = 1 MsgBox(ipm_msg2, vbCritical, "入力エラー") TextBox1.Clear() End If '********************************************************************** If Len(TextBox1.Text) = 0 Then flg = 0 exit sub ElseIf Regex.IsMatch(TextBox2.Text, "^[0-9]{1,3}$") Then tx2 = Val(TextBox2.Text) tx2 = Convert.ToInt32(tex2) Else MsgBox(ipm_msg1, vbCritical, "入力エラー") TextBox2.Clear() Exit Sub End If '**255以上なら入力不可** If iptx6 > 255 Then flg = 1 MsgBox(ipm_msg2, vbCritical, "入力エラー") TextBox6.Clear() Exit Sub End If