• ベストアンサー

Selectステートメントの入れ子について

Ifステートメントで  If 条件1   If 条件2 … とするのが見づらいと思い、Notをつけて並べてみました。 Sub ()  If Not 条件1 Then    End Sub  End If  If Not 条件2 Then    End Sub  End If  処理 End Sub これをSelectステートメントで行いたいのですが、入れ子にしないで書く方法はあるのでしょうか? (Select Not(?)のような…) もしあれば、お教えください。

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

  • ベストアンサー
回答No.1

>Selectステートメント >入れ子にしない やろうと思ってできないことは無いけど、、、 条件1と条件2の型が書いてないのでわかりませんが、 「偽」がFalseか0を返すなら↓これ Select Case False   Case 条件1     Exit Sub   Case 条件2     Exit Sub End Select (個人的には「If Not 値 Then」で良いような気がしますが。。。) その条件を判定する部分を、別関数として外に出すとスッキリするかも知れませんね。 Sub Main()   If Not 判定 Then     Exit Sub   End If     '処理 End Sub Function 判定() As Boolean  If Not 条件1 Then    Exit Function  End If  If Not 条件2 Then    Exit Function  End If    判定 = True End Function

gogomama
質問者

お礼

ありがとうございます。 一般的な形がどのような書き方か、というのが分からない部分がありましたが、「If Not 値 Then~」の書き方でも問題は無いのですね。 別関数の例もわかりやすかったです。ありがとうございました。

関連するQ&A

  • IFステートメントの使い方 どちらでもないならば

    「出金も入金も0じゃないならば」としたい場合、どのようなifステートメントを作ればいいでしょう? Sub test() Dim 出金 As Currency Dim 入金 As Currency 出金 = 0 入金 = 0 '(1) If Not (出金 = 0) And Not (入金 = 0) Then MsgBox "出金0入金0ではありません" End If '(2) If (出金 = 0) And (入金 = 0) Then Else MsgBox "出金0入金0ではありません" End If End Sub (1)だとうまくいきません。 (2)のように Elseを使って対応するしかないのでしょうか? (2)でいけますが、今後の勉強の為にelseを使わずに、「どちらでもないならば」の方法を教えてください。

  • ifステートメント notと!は同じ意味ですか?

    VBAのifステートメントで、notと!は同じ意味ですか? 「a」で始まらない。 と言う意味で、下記のコードを作ったのですが、どちらも思い通りの結果が得られます。 If "あabc" Like "[!a-z]*" Then Debug.Print "OK" End If If Not "あabc" Like "[a-z]*" Then Debug.Print "OK" End If End Sub ネットからのサンプルをコピペしたので、いまいち理解できてないのですが notと!は同じ意味ですか?

  • selectステートメント

    ASP(VBスクリプト)で条件付のサブルーチンを作りたいんですけど 10未満はAを表示 10以上20未満はB 20以上はCを表示させるサブルーチン sub test(p) select case p case p<10 response.write A case p>=10 and p<20 response.write B case p>=20 response.write C end select end sub で行ったけどだめでした。 助けてください

  • For~Nextステートメント  途中で止めるには

    For~Nextステートメント で、変数が5なら止めたいのですがIFを使わない方法があったと思うのですが、 忘れてしまいました。 今は、 +++++++++++++++++++++++++++++ Sub test() Dim i As Long For i = 2 To 10 If i = 5 Then Stop End If Next End Sub +++++++++++++++++++++++++++++ としていますが、 If i = 5 Then Stop End If じゃなくても、一つのメソッドで出来た気がするのですが、 わかる方いらっしゃいますか? ご回答よろしくお願いします。

  • ExitでIFステートメントを抜けたい

    Sub test() Dim n As Byte, i As Byte For i = 0 To 5   If n = 0 Then    n = n + 1   Else    Exit For '(1)ここから   End If i = i + 1 '(2)ここへ来たい(IFステートメントだけ抜けたい) Next i End Sub のように(1)から(2)へ行きたいのですが このコードを実行すると Forステートメントを抜けてしまい、マクロが終了してしまいます。 「Exit If」にするとエラーになってしまいます。 Exitを使用してIFステートメントだけ抜け、 Forステートメントに戻るにはどうすればいいでしょうか? ご教授よろしくお願いします。

  • For Each ~ Nextステートメント

    今、1つのブックに200前後のワークシートがあるとします。 For Each ~ Nextステートメントを使って以下のようなプログラムを全てのワークシートに適用したいと考えています。 Sub test() Dim mySht As Worksheet For Each mySht In Worksheets If Range("A2").Value <> "1990/01/31" Then Rows("2:2").Select Selection.Insert Shift:=xlDown Range("A2").Select ActiveCell.FormulaR1C1 = "1990/01/31" End If If Range("A3").Value <> "1990/02/28" Then Rows("3:3").Select Selection.Insert Shift:=xlDown Range("A3").Select ActiveCell.FormulaR1C1 = "1990/02/28" End If ・・・(中略)・・・ Next End Sub しかし、これを実行しても、うまくいきません。 全てのワークシートについて、必ずしもA2のセルが 1990/01/31であるとは限らないことが原因かとは思うんですが、自身ではどうしてもうまくプログラムを書くことが できません。良いお知恵を拝借できればと思います。

  • Excel マクロ ifステートメントでシート保護を判別するには?

    こんにちは。 Excelでマクロを作成していますが、どうしても解らないので質問しました。 解る方いましたら回答よろしくお願いします。 ifステートメントで「シート保護」の有無を条件にしたいのですが、うまくいきません。  if activesheet.unprotect = true then   処理1  else   処理2  end if としていますが、「シート保護」の有無に関係なく、常に処理2となってしまいます。

  • ifステートメントで、[が含まれるかどうかを調べた

    ifステートメントで、[が含まれるかどうかを調べたいのですが ****************************** Sub test1() Dim myStr As String myStr = "[aaa]" If myStr Like "*[*" Then MsgBox "[を含んでいます。" End If End Sub ****************************** をやろうとすると 「実行時エラー93 パターン文字列が不正です」 となってしまいます。 ヘルプを見ると ************************************************************ 検索の Like 演算子で指定されているパターン文字列が無効です。 エラーの原因と対処方法を次に示します。 たとえば、文字リスト式 [a-b は、右かっこ (]) がないため、無効です。 リスト式の文字を確認します。 詳細については、目的の項目を選択して F1 キー (Windows) または Help キー (Macintosh) を押してください。 ************************************************************ との事なので、 If myStr Like "*[*]" Then としたら、問題なくできましたが、 [だけが含まれているかどうかを調べることは不可能なのでしょうか?

  • IFステートメントで半角でも全角でもtrueとさせ

    IFステートメントで半角でも全角でもtrueとさせるには? Sub test1() Dim str As String str = "ABC"’←全角のA If str Like "*A*" Then ’←半角のA MsgBox "Aがあります" End If End Sub これで、半角Aもメッセージを表示させたいのですが、 マッチバイトみたいなのってありますか?

  • VBA IFステートメントがうまくできません

    Sub tset1() Dim URL As String URL = "http://oshiete.coneco.net/mypage#tabs" If URL Like "http://oshiete.coneco.net/mypage#tabs" Then MsgBox "成功!" End If End Sub を実行すると、URL の値は"http://oshiete.coneco.net/mypage#tabs"なのに、 "成功!"が表示されません。 #が曲者のような気がしますが、これ以上わかりません。 URL = "http://oshiete.coneco.net/mypage"にすれば、うまくいきした。 #があっても、IFステートメントが使えるようにするにはどうすればいいでしょうか? ご回答よろしくお願いします。

専門家に質問してみよう