|
▼T.K さん:
>しかも、複数のセルを選択してマクロを動かすとすべてのセルで一気に色が変わり、大文字になるという事がわかりました。ですので256文字の壁さえクリアできればほぼ目的は達成できるのではないかと思います。なぜ256文字以上はうまくいかないのか私の知識ではわかりません
256文字以上のセル内文字列は一括置換できなくなる、というのはExcelの仕様のようですね
256文字以上の文字列でも、文字列変数にコピーしてなら Replaceで置換できますので、
ちょっと回りくどいけど、指定セル範囲内の各セルについて
LargeChar 対象セル、 検索文字列リスト、Font色
を呼び出す、という風にしてみましょう。
Sub Try2()
Dim c As Range
Dim What
' '別シートの検索文字列リストを変数 What に取得
What = Application.Transpose( _
Worksheets("完全一致F").UsedRange.Resize(, 1))
If Not IsArray(What) Then What = Split(What, "")
'対象範囲を順にLoopして セルごと処理
For Each c In Worksheets("クローンリスト").UsedRange.Resize(, 1)
LargeChar c, What, vbRed
Next
End Sub
'c: 対象セル What:検索文字列 Color:Font色
Sub LargeChar(c As Range, What As Variant, nColor As Long)
Dim j As Long
Dim sL As String
Dim ss As String
Dim wh
For Each wh In What
sL = UCase$(wh) '例. wh:"aaa" sL:"AAA"
ss = Replace(c.Text, wh, sL) '文字列の置換
c.Value = ss '変換後の文字列をセルにセット
Do
j = InStr(j + 1, ss, sL)
If j = 0 Then Exit Do
c.Characters(j, Len(sL)).Font.Color = nColor
Loop
Next
End Sub
'Fontの色は vbColor または RGBで指定してください
vbRed
vbBlue
vbGreen
vbYellow
vbCyan
vbMagenta
などが利用できます(パレットの影響をうけません)
|
|