お世話になります。
特定の文字列を見つけて色をつけたいです。
コードを書いてみました。
ですが、エラーがでます。
おかしいとこをご教示お願いします。
Dim myStr As String
Dim i As Integer
Dim k As Long
Dim c As Range
myStr = "◎◎" -------※固定です
For i = 1 To Cells(Rows.Count, "E").End(xlUp).Row
Set c = Range(Cells(i, 1), Cells(i, 5))
c.Font.ColorIndex = xlAutomatic
If InStr(c, myStr) > 0 Then ----※ここでエラー「型が一致しません」
For k = 1 To Len(c)
If Mid(c, k, Len(myStr)) = myStr Then
c.Characters(Start:=k, Length:=Len(myStr)).Font.ColorIndex = 3
End If
Next k
End If
Next i
No.2ベストアンサー
- 回答日時:
こんにちは、すでに的確なアドバイスがありますが、
>If InStr(c, myStr) > 0 Then ----※ここでエラー「型が一致しません」
InStr関数は、 InStr([ start ], string1, string2, [ compare ]) は、のようにしなければなりません。
https://docs.microsoft.com/ja-jp/office/vba/lang …
Set c =セル を範囲に変えたらいきなりエラー、、ありがちかと思います。?
Dim c As Range
なので単一セルの値を取得(c.value)できますが、セル範囲の値を一度に取得する事は出来ません。
方法としては、Set cを使用したいなら、Set c = Range(Cells(i, 1), Cells(i, 5)) 範囲をやめ
Range(Cells(i, j))のようにループを増やすか、Set c = Range(Cells(i, 1), Cells(i, 5))をそのままにして
ループを増やし レンジcのアドレスで取得するかになります。配列に似ていますが、RangeなのでFont設定などが出来ます。
例:
Dim myStr As String
Dim i As Long, j As Integer
Dim k As Integer
Dim c As Range
myStr = "◎◎"
Set c = Range(cells(1, "A"), cells(cells(Rows.Count, "E").End(xlUp).Row, "E"))
For i = 1 To cells(Rows.Count, "E").End(xlUp).Row
For j = 1 To 5 '列方向のループを増やす。
c(i, j).Font.ColorIndex = xlAutomatic
If InStr(c(i, j), myStr) > 0 Then
For k = 1 To Len(c(i, j))
If Mid(c(i, j), k, Len(myStr)) = myStr Then
c(i, j).Characters(Start:=k, Length:=Len(myStr)).Font.ColorIndex = 3
End If
Next k
End If
Next j
Next i
ご回答ありがとうございました。
補足に入れようと思ったら文字数が足らなくて新たに質問しました。
教えて頂いたコードで出来ました。ありがとうございました。
No.3
- 回答日時:
こんにちは!
前回回答した者です。
原因はNo.1様が仰っている通りです。
手直しされたコードを拝見すると、A1セル~E列最終行の範囲が対象なのですね。
Sub Sample2()
Dim c As Range
Dim k As Long
Dim lastRow As Long
Dim myStr As String
myStr = Application.InputBox("特定文字を入力")
lastRow = Cells(Rows.Count, "E").End(xlUp).Row '//←E列最終行を取得//
For Each c In Range(Cells(1, "A"), Cells(lastRow, "E")) '//A1セル~E列最終行範囲内をループ//
If InStr(c, myStr) > 0 Then
For k = 1 To Len(c)
If Mid(c, k, Len(myStr)) = myStr Then
c.Characters(Start:=k, Length:=Len(myStr)).Font.ColorIndex = 3
End If
Next k
End If
Next c
End Sub
※ 今回の質問では1セルずつ舐めるように検索するしかないようなので、
変数「c」は1セルにしないとエラーになります。
※ 今回は元のフォント色はそのままにしています。m(_ _)m
ご回答ありがとうございました。
その質問です。補足に入れようと思ったら文字数が足らなくて新たに質問しました。
言葉足らずですみませんでした。E列が最終でした。教えて頂いたコードで出来ました。ありがとうございました。
No.1
- 回答日時:
こんにちは
>コードを書いてみました。
>ですが、エラーがでます。
これかな?
https://oshiete.goo.ne.jp/qa/11867679.html
勝手な思い込みでいじらずに、それぞれのセンテンスがどのような構造になっているのかを理解した上で、修正すれば問題は起きないかと。
>If InStr(c, myStr) > 0 Then ----※ここでエラー「型が一致しません」
原文とは違って、変数cが「セル範囲」になっているのが原因でしょう。
その後でも、あたかもcが文字列であるかのような記述になっていますけれど、みるからに怪しそうですね。
せっかく(模範?)回答をもらっているのだから、それを教材に内容を研究なさったほうがよいでしょう。
ご回答ありがとうございました。
その質問です。補足に入れようと思ったら文字数が足らなくて新たに質問しました。
お礼が遅くなりましたが出来ました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Excel(エクセル) R列の1111/11/11以外、且つQ列の×の条件で該当行のAからAE列までオレンジに塗りつぶす 2 2022/07/02 10:18
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBAで教えて頂きたいのですが? 1 2022/04/29 02:36
- Visual Basic(VBA) ExcelVBAの転記について 1 2022/03/23 20:13
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SUMIF関数で、「ブランク以外を...
-
文字列から英数字のみを抽出す...
-
エクセル1行おきのセルを隣の...
-
自分の左隣のセル
-
excelで、空白を除いてデータを...
-
EXCELのcountif関数での大文字...
-
エクセルで、指定の値よりも大...
-
エクセルでエンターを押すと任...
-
EXCELでマイナス値の入ったセル...
-
【Excel】4つとばしで合計する方法
-
エクセルで特定のセル内にだけ...
-
Excelで離れた位置のAVERAGEを...
-
週の労働時間を計算するエクセル
-
Excelで大量のセルに一気に関数...
-
エラー「#REF」の箇所を置き換...
-
セルを結合した時のエクセル集...
-
同一セル内の重複文字を削除し...
-
条件付き書式の色付きセルのカ...
-
エクセル 平日と土日祝の時間...
-
エクセル2010 欠席者の名前を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SUMIF関数で、「ブランク以外を...
-
文字列から英数字のみを抽出す...
-
エクセル1行おきのセルを隣の...
-
自分の左隣のセル
-
エクセルで、指定の値よりも大...
-
excelで、空白を除いてデータを...
-
セルを結合した時のエクセル集...
-
エクセルで、A2のセルにA3...
-
エクセルで年月日から月日のみへ
-
エクセルに入力後、別シートの...
-
【Excel】4つとばしで合計する方法
-
Excelで大量のセルに一気に関数...
-
エクセルで特定のセル内にだけ...
-
EXCELのcountif関数での大文字...
-
EXCELでマイナス値の入ったセル...
-
条件付き書式の色付きセルのカ...
-
エラー「#REF」の箇所を置き換...
-
Excelで離れた位置のAVERAGEを...
-
同一セル内の重複文字を削除し...
-
週の労働時間を計算するエクセル
おすすめ情報