アプリ版:「スタンプのみでお礼する」機能のリリースについて

「句読点の「。」の後に文字が続くなら」
という条件で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つしか作りたくないです。

A 回答 (4件)

Like 演算子による場合は、No.2 さんのご回答で正しいですね。

ベストアンサーは辞退します。

比較演算子による場合は、次のコードなど。

If InStr(s1, "。") < Len(s1) Then


>実は行を最終行までループさせてるのでIFステートメントは1つしか作りたくないです。

ループだと、If は 1 つにするのがいいのですか?ちょっと意味がよく分からないです。また、ある一時点での場合分けにより複数の処理に分岐させることを想定しておっしゃっているとすれば、If を複数書くのではなくて、If ... (ElseIf ...) (Else ...) End If というふうに並べて書くことになっているのですよね。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2013/09/16 14:41

その条件でよいなら、『読点「。

」で終わらないなら。』と考え直すことができます。

すなわち、一番最後(右)の1文字だけ調べれば十分です。

If Right(s1, 1) <> "。" Then MsgBox "。の後ろにも文字があります。"

これで良いでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2013/09/16 14:41

No.1です!


たびたびごめんなさい。

前回の方法では、仮に
>s1 = "今日は晴れです。でも明日は雨です"
のように句点の後に文字が続いていても、最後に句点がない場合は表示されませんので、
No.1は無視して、

>If s1 Like "*。?*" Then

に変更してみてください。
(句点の後に1文字以上の文字がある場合は・・・)にしてみました。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2013/09/16 14:41

こんばんは!



>If s1 Like "*。*" Then
といったワイルドカードの使い方では、句点の後の文字数および文字種に関係なく
句点が一つあれば質問のようになってしまいますので、

一案です。
>If Len(s1) - Len(Replace(s1, "。", "")) > 1 Then
としてみてはどうでしょうか?

※ 最初の文字数と句点を削除した文字数が2文字以上の差があれば・・・
という考え方です。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2013/09/16 14:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!