' ----------------------------------------------------------------
' 選択されたセル内のテキストに対し、フォント色を変更する処理
'(「:」の前後でフォント色を変更 ※セル内改行を考慮)
' ----------------------------------------------------------------
Sub prcFormatTextInCellLines()
Dim rngCell As Range ' 処理するセルを参照するための変数
Dim arrLines() As String ' セル内の各行を格納するための配列
Dim intLineIndex As Integer ' 行のインデックス
Dim intStartPos As Integer ' フォーマット開始位置
Dim intColonPos As Integer ' コロンの位置
Dim lngGrayColor As Long ' グレー色を表すLong型の数値
Dim lngBlackColor As Long ' 黒色を表すLong型の数値
lngGrayColor = &H808080 ' グレー色のLong型の十進数値
lngBlackColor = &H0 ' 黒色のLong型の十進数値
' 選択範囲内の各セルに対してループ処理
For Each rngCell In Selection
If InStr(rngCell.Text, Chr(10)) Then
arrLines = Split(rngCell.Text, Chr(10)) ' セル内のテキストを行ごとに分割
intStartPos = 1
' 各行に対してループ処理
For intLineIndex = LBound(arrLines) To UBound(arrLines)
intColonPos = InStr(arrLines(intLineIndex), ":") ' コロンの位置を検索
If intColonPos > 0 Then
' コロンの前のテキストをグレーに設定
With rngCell.Characters(Start:=intStartPos, Length:=intColonPos).Font
.Color = lngGrayColor
End With
' コロンの後のテキストを黒に設定
With rngCell.Characters(Start:=intStartPos + intColonPos + 1, Length:=Len(arrLines(intLineIndex)) - intColonPos).Font
.Color = lngBlackColor
End With
End If
intStartPos = intStartPos + Len(arrLines(intLineIndex)) + 1 ' 次の行の開始位置を更新
Next intLineIndex
End If
Next rngCell
End Sub
コメント