「:」を使えば、一行のコードにできるわけではない?

このQ&Aのポイント
  • 「:」を使って一行のコードにすることはできません。
  • 「:」を使うと、条件文と処理文が1行で記述されるため、可読性が低下します。
  • 正しく動作するためには、条件文と処理文を適切に改行して記述する必要があります。
回答を見る
  • ベストアンサー

「:」を使えば、一行のコードにできるわけではない?

「:」を使えば、一行のコードにできるわけではないのですか? ifステートメントを1行にしたいのですが Sub test() Dim a As String a = "aiu" If a Like "*i*" Then: Stop: End If End Sub これだと End If に対応する If ブロックがありません。 となってしまいます。 ちゃんと、 Sub test() Dim a As String a = "aiu" If a Like "*i*" Then Stop End If End Sub こうしないとダメですか? なぜ、:は使えないのですか? よろしくお願いします。

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

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

If ~ Then : Stop コレは通ります。 ここまでだけでIfの処理が完結してしまっていますから、 End If は必要ないですよ、という意味です。 つまり、「:」が使えないですよ、という意味のエラーではありません。

ukhdknazxh
質問者

お礼

:のせいではなく、End Ifが余計だったようですね。 とてもわかりやすい説明ありがとうございます。

関連するQ&A

  • 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 じゃなくても、一つのメソッドで出来た気がするのですが、 わかる方いらっしゃいますか? ご回答よろしくお願いします。

  • 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もメッセージを表示させたいのですが、 マッチバイトみたいなのってありますか?

  • [と”の意味を教えてください。

    http://okwave.jp/qa/q5945112.html を参考に、 Sub test1() Dim i As Integer i = 2 If i Like "[1-3]" Then MsgBox i & "です" End If End Sub Sub test2() Dim i As Integer i = 2 If i Like "[1-5]" Then MsgBox i & "です" End If End Sub Sub test3() Dim i As Integer i = 2 If i Like "[1-10]" Then MsgBox i & "です" End If End Sub を作ったのですが、 test3はうまく行きません。 意味としては、 iが "[1-10]"の中の数字の間のどれかであれば、 MsgBox i & "です" を表示させたいです。 でも上記のマクロを実行させた結果、 "[1-10]"の中で計算が行われてるのではないかと思います。 だから、test3は、1-10=-9 という事になり、msgboxが反応しないのではないかと思っています。 でもそうすると、test2だって "[1-5]"は、-4になって、i=2とは違う値なのに なぜMsgBoxが反応してしまうのかわかりません。 でもそもそも[と”の意味が分からないのでそこから教えていただけませんか? “の意味、は二つで挟んで文字列にすると思っています。

  • VBA 変数にアスタリスクが含んでるかどうか

    変数にアスタリスクが含んでるかどうかをIFステートメントで取得するには? Sub test() Dim mystr As String mystr = "*/" If mystr Like "*" Then MsgBox "mystrはアスタリスクを含んでます。" End If End Sub このようなことをしたい場合、 mystr = "*/" でも mystr = "/" でも、結局は*が、どの文字でも含まれると認識してしまいます。 変数にアスタリスクが含まれてるかどうかを判定する方法を教えてください。

  • 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ステートメントに戻るにはどうすればいいでしょうか? ご教授よろしくお願いします。

  • ifステートメント 大文字も小文字も区別なく

    Sub test() Dim moji As String moji = "a" If moji = "A" Then MsgBox "Aかaです" End If End Sub これだと、変数が小文字のaだからmsgboxが表示されません。 小文字も大文字も区別なく認識させるにはどうすればいいでしょうか? バイナリモードになってるようです。 Replace関数の場合は、vbTextCompareを付ければ Sub Sample() Dim moji As String moji = "a" Debug.Print Replace(moji, "A", "b", , , vbTextCompare) End Sub このように大文字小文字区別なく置換できますが このような事をifステートメントでやる方法を教えてください。

  • 日本語(ひらがな・カタカナ・漢字)があるか判断する

    日本語(ひらがな・カタカナ・漢字)があるか判断する方法 Sub test1() Dim Str As String Dim MidStr As String Dim i As Long Str = "aiu123あいう" For i = 1 To Len(Str) MidStr = Mid(Str, i, 1) If Asc(MidStr) < 0 Then MsgBox "日本が混ざっています" Exit Sub End If Next End Sub このマクロを実行すると、「あ」の順番になった時にうまく反応するのですが、 いまいちASC関数についてよくわからないので教えてください。 ASC関数でマイナスになるものは全て日本語なのでしょうか? Asc(MidStr) < 0でいいのか、そこが知りたいです。 a→97 i→105 u→117 1→49 2→50 3→51 あ→-32096 い→-32094 う→-32092 でした。 ご回答よろしくお願いします。

  • 角カッコが含まれてるかどうかをlikeで取得

    したいのですが、どうやらエラーになるようです。 Sub test() Dim mystr As String mystr = "[test]" If mystr Like "*[*" Then MsgBox "[が含まれます" End If End Sub だと、実行時エラー93 パターン文字列が不正ですになります。 こういうように各カッコが含まれてるかどうかを取得するにはどうすればいいですか?

  • like演算子で大カッコがあるか判断するには

    Sub test() Dim R As String R = "あ[あ]あ" If R Like "[" Then MsgBox "文字の中に大カッコがあります" End If End Sub を実行すると、 実行時エラーでパターン文字列が不正です。 になります。 If R Like "(" Then なら、問題なく動きます。 どうすればいいでしょうか?ご回答よろしくお願いします。

  • 「'」もascで変換させたい

    A1に「'test」と入れると「test」になってしまいます。 そして、 Sub test() Dim MojiInt As Long Dim i As Long Dim myRow As Long Dim Moji As String MojiInt = Len(Cells(1, 1)) For i = 1 To MojiInt Moji = Mid((Cells(1, 1)), i, 1) If i = 1 Then Cells(1, 2) = Asc(Moji) Else Cells(1, 2) = Cells(1, 2) & "," & Asc(Moji) End If Next i End Sub をすると、 116,101,115,116 になります。 最初の「'」もascで変換させることは無理なのでしょうか?

専門家に質問してみよう