プロが教える店舗&オフィスのセキュリティ対策術

変数にアスタリスクが含んでるかどうかをIFステートメントで取得するには?

Sub test()
Dim mystr As String

mystr = "*/"

If mystr Like "*" Then
MsgBox "mystrはアスタリスクを含んでます。"
End If

End Sub

このようなことをしたい場合、
mystr = "*/"
でも
mystr = "/"
でも、結局は*が、どの文字でも含まれると認識してしまいます。

変数にアスタリスクが含まれてるかどうかを判定する方法を教えてください。

A 回答 (6件)

No3です。



>Accessで予約されている記号などを含む場合の

と書いていますが、Excelでも同じです。土俵が
書いていないので、思わずAccessと書きましたが、
このように。
    • good
    • 0

普通は、


If Instr(mystr,"*") >0 Then
    • good
    • 0

いま、VBAを使える環境に無いのですが。



MsgBox UBound(Split( Mystr, ”*” ) )

で0なら含まない。1以上なら、その個数含まれる。
”*” を ”*/” や ”/*” に変えてお試し下さい。
    • good
    • 1

再度、No1,No2です。

説明のしかたが変だったので
やり直し。
「*」は特殊文字なので、[]で括っておく必要があります。
なおかつLikeを使いますから「*」を使う必要があります。
ということで、以下。



調べる文字列が、"*/"の場合、

If mystr Like "[*]*" Then

ならば、検出しますが、

If mystr Like "*[*]" Then

ならば、検出しません。
文字列が、"/*"ならば、検出結果は反対になります。
文字列に「*」が含まれているかであれば、

If mystr Like "*[*]*" Then

とするのが、妥当かと思います。


Accessで予約されている記号などを含む場合の
対応についてはWebで検索すればいろいろ出てくる
と思いますが。
    • good
    • 2

No1です。


あるいは、
If mystr Like "*[*]*" Then

*/
の場合は、"[*]*" ならば検出するけれども、
"*[*]"ならば検出しないので、含まれている
ということであれば、

  If mystr Like "*[*]*" Then

が、合理的かもしれません。
    • good
    • 1

>If mystr Like "*" Then



If mystr Like "[*]*" Then
    • good
    • 1

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング