• ベストアンサー

セルの中の特定文字列のチェック

セルの文字列に"*"や"%"が含まれているかチェックするプログラムを作ることはできますか。

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

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.1

◆関数ですが =ISNUMBER(FIND("*",A1)) =ISNUMBER(FIND("%",A1))

buck
質問者

お礼

回答ありがとうございます。 参考になりました。

その他の回答 (4)

noname#31387
noname#31387
回答No.5

もう一つ。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

buck
質問者

お礼

回答ありがとうございます。 参考になりました。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.4

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

buck
質問者

お礼

回答ありがとうございます。 参考になりました。

noname#31387
noname#31387
回答No.3

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

buck
質問者

お礼

回答ありがとうございます。 参考になりました。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

「検索」や「置換」で探す場合のことなら 直前に"~"(Shift+"^")を追加して"~*","~%"で行えば ワイルドカードでなく文字として検索できます。

buck
質問者

お礼

回答ありがとうございます。 参考になりました。

関連するQ&A