- ベストアンサー
セルの中の特定文字列のチェック
セルの文字列に"*"や"%"が含まれているかチェックするプログラムを作ることはできますか。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
◆関数ですが =ISNUMBER(FIND("*",A1)) =ISNUMBER(FIND("%",A1))
その他の回答 (4)
もう一つ。MidとLenを使用してみました。 セルA1の中に* % があれば色を付けてます。 #色付けは、No4さんのCharactersを参考にしてます。 Sub Test2() Dim myS As String Dim myA As Variant Dim f As Long myA = Array("*", "%") With ActiveSheet.Range("A1") myS = .Value For f = 1 To Len(myS) Select Case Mid(myS, f, 1) Case myA(0) .Characters(f, 1).Font.ColorIndex = 3 Case myA(1) .Characters(f, 1).Font.ColorIndex = 5 End Select Next End With End Sub
お礼
回答ありがとうございます。 参考になりました。
- nicotinism
- ベストアンサー率70% (1019/1452)
No3さんの案を拝借して、 標準モジュールに記述。 ※セルの内容が、a&a&& 等のように 同じ検索文字が複数あった場合は最初の文字しか色は変わりません (^^ゞ Sub t() Dim r As Range Dim i As Integer Dim sc As Variant '配列変数宣言 '「! % & * 」を探します sc = Split("!,%,&,*", ",") '使用中のセルを一つずつ検証 For Each r In ActiveSheet.UsedRange '配列の中の文字を一つずつ検証 For i = 0 To UBound(sc) 'もし文字があったら If InStr(r.Text, sc(i)) > 0 Then '見つけた最初の文字を赤文字に r.Characters(Start:=InStr(r.Text, sc(i)), Length:=1).Font.Color = vbRed 'セルの背景全体を黄色にする場合はこっち 'r.Interior.Color = vbYellow End If Next i Next r End Sub
お礼
回答ありがとうございます。 参考になりました。
InStrは如何でしょう。 詳しくはInStr関数を調べて下さい。 その他 Mid,Left,Len等も参考になるかもです。 サンプルです。 セルA1の"*"を探します。 無ければ0を,あれば前から何番目かを返します。 Sub Test() Dim myAns As Long Dim myS As String Dim myA As String myS = ActiveSheet.Range("A1").Value myA = "*" myAns = InStr(1, myS, myA, vbBinaryCompare) MsgBox myAns End Sub
お礼
回答ありがとうございます。 参考になりました。
- mshr1962
- ベストアンサー率39% (7417/18945)
「検索」や「置換」で探す場合のことなら 直前に"~"(Shift+"^")を追加して"~*","~%"で行えば ワイルドカードでなく文字として検索できます。
お礼
回答ありがとうございます。 参考になりました。
お礼
回答ありがとうございます。 参考になりました。