• ベストアンサー

「句読点の「。」の後に文字が続くなら」

「句読点の「。」の後に文字が続くなら」 という条件でIFステートメントを作成するには? 例えば、 Sub Macro() Dim s1 As String s1 = "今日は晴れです。でも明日は雨です。" If s1 Like "*。*" Then MsgBox "。の後ろにも文字があります。" End If End Sub の時は、OKなのですが、 s1 = "今日は晴れです。" にした時も、 If s1 Like "*。*" Then だと、 MsgBox "。の後ろにも文字があります。" が表示されてしまいます。 s1 = "今日は晴れです。でも明日は雨です。" の時は、 MsgBox "。の後ろにも文字があります。" を表示させて、 s1 = "今日は晴れです。" の時は表示させない方法を教えてください。 実は行を最終行までループさせてるので IFステートメントは1つしか作りたくないです。

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

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

Like 演算子による場合は、No.2 さんのご回答で正しいですね。ベストアンサーは辞退します。 比較演算子による場合は、次のコードなど。 If InStr(s1, "。") < Len(s1) Then >実は行を最終行までループさせてるのでIFステートメントは1つしか作りたくないです。 ループだと、If は 1 つにするのがいいのですか?ちょっと意味がよく分からないです。また、ある一時点での場合分けにより複数の処理に分岐させることを想定しておっしゃっているとすれば、If を複数書くのではなくて、If ... (ElseIf ...) (Else ...) End If というふうに並べて書くことになっているのですよね。

wcouilqiucpv
質問者

お礼

ありがとうございます。

その他の回答 (3)

  • asciiz
  • ベストアンサー率70% (6635/9402)
回答No.3

その条件でよいなら、『読点「。」で終わらないなら。』と考え直すことができます。 すなわち、一番最後(右)の1文字だけ調べれば十分です。 If Right(s1, 1) <> "。" Then MsgBox "。の後ろにも文字があります。" これで良いでしょう。

wcouilqiucpv
質問者

お礼

ありがとうございます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です! たびたびごめんなさい。 前回の方法では、仮に >s1 = "今日は晴れです。でも明日は雨です" のように句点の後に文字が続いていても、最後に句点がない場合は表示されませんので、 No.1は無視して、 >If s1 Like "*。?*" Then に変更してみてください。 (句点の後に1文字以上の文字がある場合は・・・)にしてみました。m(_ _)m

wcouilqiucpv
質問者

お礼

ありがとうございます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! >If s1 Like "*。*" Then といったワイルドカードの使い方では、句点の後の文字数および文字種に関係なく 句点が一つあれば質問のようになってしまいますので、 一案です。 >If Len(s1) - Len(Replace(s1, "。", "")) > 1 Then としてみてはどうでしょうか? ※ 最初の文字数と句点を削除した文字数が2文字以上の差があれば・・・ という考え方です。m(_ _)m

wcouilqiucpv
質問者

お礼

ありがとうございます。

関連するQ&A

  • 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ステートメントでやる方法を教えてください。

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

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

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

    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が反応してしまうのかわかりません。 でもそもそも[と”の意味が分からないのでそこから教えていただけませんか? “の意味、は二つで挟んで文字列にすると思っています。

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

    Sub test() Dim R As String R = "あ[あ]あ" If R Like "[" Then MsgBox "文字の中に大カッコがあります" End If End Sub を実行すると、 実行時エラーでパターン文字列が不正です。 になります。 If R 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もメッセージを表示させたいのですが、 マッチバイトみたいなのってありますか?

  • 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 としたら、問題なくできましたが、 [だけが含まれているかどうかを調べることは不可能なのでしょうか?

  • 変数に特定の文字が含まれているなら(VBA)

    以前に質問した http://oshiete1.goo.ne.jp/qa4407128.html とは違うのですが 変数"あいうえお"に "あ"が含まれているなら "含まれています"と表示したいです。 Sub test() Dim strmoji As String strmoji = "あいうえお" If Find(strmoji) Like "*あ*" Then MsgBox "含まれています" End If End Sub 部分的に考えてみたのですが 「Sub、Function、または Property が定義されていません。(Error 35)」 が出てしまいます。 ご教授よろしくお願い致します。

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

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

  • Excel:文字列の比較:大文字と小文字の区別

    Excel(2002)のワークシートの数式で文字列を比較するとき 半角英字の大文字と小文字が区別されないようなのですが、 区別するためにはどうしたらよいのでしょうか。 ※任意のセルで ="a"="A" とすると TRUE が帰ってくる。Countif などの動作も同様。 ※VBAでは次のコードを実行すると FALSE が表示される。 Sub compare() If "a" = "A" Then MsgBox "TRUE" Else MsgBox "FALSE" End If End Sub カテゴリ違いかもしれません。とすれば申し訳ありません。よろしくおねがいします。

  • SelectionChangeイベント 文字列エラ

    エクセルvbaなのですが セルをクリックしたときに、該当する値ならメッセージを表示させる際に Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Value = 1Then MsgBox "" End If End Sub ならエラーにならずに動くのに Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Value = "運賃" Then MsgBox "" End If End Sub のように文字列にすると、型が一致しません。 と言うエラーになります。 If Target.Value = "運賃" Then の時でも、空白セルや数値が入ったセルをクリックした際はエラーになりません。 どのような型にすればいいのでしょうか? 実際、「運賃」と言う値が入ってるセルをクリックしても同じエラーが発生します。

専門家に質問してみよう