我具有以下功能,该功能可以解析一些格式表并返回颜色索引:
Function returnFontColor(targetString As String) As Integer
Dim formatSheet As Worksheet
Dim lastRow As Long
Dim row As Long
Dim counter As Integer
returnFontColor = 0
Set formatSheet = ThisWorkbook.Worksheets("Formatting")
With formatSheet
lastRow = .Cells(.Rows.Count, 2).End(xlUp).row
For row = 2 To lastRow
If LCase(CStr(.Range("B" & row).Value)) = LCase(CStr(targetString)) Then
For counter = 1 To Len(.Range("C" & row).Value)
If .Range("C" & row).Characters(Start:=counter, Length:=1).Font.ColorIndex <> 0 Then
returnFontColor = .Range("C" & row).Characters(Start:=counter, Length:=1).Font.ColorIndex
GoTo Exiter
End If
Next
End If
Next
End With
Exiter:
End Function
我如何使用该功能:
ws.Cells(row_num, col_num).Font.ColorIndex = returnFontColor(name)
我的问题是,调用此函数得到的颜色与格式表的颜色明显不同,我不明白为什么,因为这应该依赖于非常特定的RGB。有什么我想念的吗?
答案 0 :(得分:1)
用户Font.Color
而不是Font.ColorIndex
。
`索引返回一个可以包含许多颜色的托盘。
答案 1 :(得分:0)
返回颜色索引与返回颜色不同。颜色索引从调色板返回一个位置,而不是实际的RGB颜色。
通常,从主菜单的颜色下拉列表中选择单元格填充颜色。在这种情况下,尽管颜色索引相同,两个具有不同Office主题的工作簿仍将显示不同的颜色。
要获取实际的填充颜色,请使用Font.Color
方法并以 Double 的形式返回,因为可能的值为0到256 ^ 3。