Sub test1()
Dim targSheet As Worksheet: Set targSheet = ThisWorkbook.Worksheets("Sheet1")
Dim A1Range As Range: Set A1Range = targSheet.Range("A1")
Dim icount
Dim char
For icount = 1 To Len(A1Range.Value)
Set char = A1Range.Characters(icount, 1)
Next
End Sub
1Option Explicit
23Sub カラー抽出()
4 Const rgb As Long = 255 '赤色(255,0,0)
56 Dim SH As Worksheet
7 Dim R As Range
8 Dim C As Characters
9 Dim i As Long, j As Long, k As Long
1011 '直前の検査結果がrgbと一致したかを保持するフラグ
12 Dim isRgb As Boolean
1314 'とりあえず10行、5列(最大文字数分メモリを確保する)
15 Dim Data(1 To 10, 1 To 5) As Variant
1617 Set SH = ActiveSheet
1819 'メインループ
20 For i = 1 To 10
21 'Rangeオブジェクト:C2からとりあえず10行
22 Set R = SH.Range("C2").Offset(i - 1, 0)
23 j = 0
24 isRgb = False
25 If Len(R.Value) > 0 Then
26 For k = 1 To R.Characters.Count
27 'キャラクタオブジェクト:先頭から1字づつ
28 Set C = R.Characters(k, 1)
29 'Debug.Print C.Font.Color
3031 If (k = 1) Or (isRgb <> (C.Font.Color = rgb)) Then
32 '初回 or 直前とisRgbが逆
33 isRgb = (C.Font.Color = rgb)
34 '色が一致している時のみインデックス移動して代入
35 If isRgb Then j = j + 1: Data(i, j) = C.Text
36 Else
37 '直前とisRgbが同じ
38 isRgb = (C.Font.Color = rgb)
39 '色が一致している時のみ追記
40 If isRgb Then Data(i, j) = Data(i, j) & C.Text
41 End If
42 Next
43 End If
44 Next
4546 '書き出し
47 SH.Range("E2").Resize(UBound(Data, 1), UBound(Data, 2)).Value = Data
48End Sub