• ベストアンサー

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

「句読点の「。」の後に文字が続くなら」 という条件で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% (6849/9743)
回答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