

エクセルで1つのセルの中に異なる色付きで入力された文字列を自動で分割してセルに代入するにはどのようにしたらいいでしょうか。

たとえば  
セル[A1] あああ（黒色）いいい（青色）ううう（黒色）

とセルに入力されているものを

セル[A2] あああ（黒色）  
セル[A3] いいい（青色）  
セル[A4] ううう（黒色）

と分割したいという具合です。


CC BY-SA 4.0
2022-12-21T00:35:53.880
92926
2022-12-21T05:07:33.723
56039
question
vba excel
エクセルで1つのセルの中に異なる色付きで入力された文字列を自動で分割して新しいセルに代入したい


[Range.Charactersプロパティ](https://learn.microsoft.com/ja-
jp/office/vba/api/excel.range.characters)で1文字ずつフォントを取得できますので、素直にループしながら判定することで目的を達成できます。

**サンプルコード**

[code]

    Sub ボタン1_Click()
        Dim cell As range
        Set cell = range("A1")
        Dim color As Integer '現在のカラーインデックス
        Dim row As Integer   '現在の出力先行番号
        Dim start As Integer '現在の色の開始位置
        color = cell.Characters(start:=1, Length:=1).Font.ColorIndex '先頭の色
        row = 2
        start = 1
        
        For i = 1 To cell.Characters.Count
            Dim ch As Characters
            Dim c As Integer
            '1文字ずつ文字色をチェック
            Set ch = cell.Characters(start:=i, Length:=1)
            c = ch.Font.ColorIndex
            If c <> color Then
                '直前の文字列と現在の文字列が違う場合は直前の文字列まで出力
                Cells(row, 1).Value = cell.Characters(start, i - start).Text
                Cells(row, 1).Font.ColorIndex = color
                '現在の文字列で変数を更新
                start = i
                row = row + 1
                color = c
            End If
        Next
        '末尾の文字列まで出力
        Cells(row, 1).Value = cell.Characters(start, i - start).Text
        Cells(row, 1).Font.ColorIndex = color
    End Sub
    
[/code]


CC BY-SA 4.0
2022-12-21T05:07:33.723
92933
2022-12-21T05:07:33.723
9820
92926
answer