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

エクセルのマクロを様々なホームページを見ながら初めて作りました。
目的は、エクセルに取り込んだ200件ほどのメールを見やすくするためです。
メールの取り込みは出来ました。データは受信日時、送信者、件名、本文(多くても500字程度)が1行ごとに入っています。
200件の内、100件程度のメールで、本文中の重要な箇所や文字が赤色にしています。

マクロで行おうとしていることは、本文中の文字列の中から文字を調べて、赤色なら受信日時も赤色にして、見やすくしようとしています。
テストで行った10件のデータではうまく処理できたのですが、200件全部を処理しようとすると、応答なし、となってしまいます。
修正した方がいい箇所があれば教えていただけませんか。

Sub fcolor()
Dim str As String, char As Characters
Dim i, j, length

For i = 1 To ActiveSheet.Cells(1, 6).End(xlDown).Row

str = Cells(i, 6)
length = Len(str)

For j = 1 To length

If Cells(i, 6).Characters(j, 1).Font.ColorIndex = 3 Then

Cells(i, 1).Font.ColorIndex = 3

Exit For
End If

Next j

Next i

End Sub

A 回答 (1件)

こんばんは!



コードを拝見すると、F列に「赤」のフォントがあればその行のA列セルすべての文字を「赤」にしたい!
というコトですよね?

お使いのバージョンが判らないのですが、Excel2007以降であれば色フィルタが使えます。
オートフィルタでの方法はどうでしょうか?
一例です。

Sub Sample1()
Dim lastRow As Long
Application.ScreenUpdating = False
Rows(1).Insert
Range("F1") = "ダミー"
lastRow = Cells(Rows.Count, "F").End(xlUp).Row
Rows(1).AutoFilter field:=6, Criteria1:=RGB(255, 0, 0), Operator:=xlFilterFontColor
Range(Cells(2, "A"), Cells(lastRow, "A")).SpecialCells(xlCellTypeVisible).Font.ColorIndex = 3
ActiveSheet.AutoFilterMode = False
Rows(1).Delete
Application.ScreenUpdating = True
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

tom04さん。
ありがとうございます。完璧でした。
処理も一瞬で終わりました。
わざわざ1文字ずつ調べなくても、エクセルが選り分けてくれるのですね。
エクセルの機能を知らずに力技でやろうとしてしまいました。
これを機にエクセルも勉強していきます。
回答のスピードと正確さ、本当に助かりました。

お礼日時:2015/04/01 22:12

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