我想计算一个由三个不同颜色的子弹组成的文本中的所有子弹点,这些子弹不是索引颜色而是服装RGB(例如 51,204,204)。然后想要显示每种颜色的数量(例如。 42蓝色) 所以想出了这个,但没有编译并说'#34;无效的限定符"指着" .Font"我在代码中突出显示:
Sub GetNumberOfBullets()
Dim objRange As Range
Dim objParagraph As Paragraph
Dim nNumber As Integer
' Initialization
Set objRange = Selection.Range
nNumber = 0
cyannum = 0
purplenum = 0
greennum = 0
For Each objParagraph In objRange.Paragraphs
If objParagraph.Range.ListFormat.ListType = WdListType.wdListBullet Then
nNumber = nNumber + 1
If objParagraph.Range`.Font`.Color.RGB = RGB(51, 204, 204) Then
cyannum = cyannum + 1
End If
If objParagraph.Range`.Font`.Color.RGB = RGB(204, 153, 255) Then
purplenum = purplenum + 1
End If
If objParagraph.Range`.Font`.Color.RGB = RGB(0, 176, 80) Then
greennum = greennum + 1
End If
End If
Next objParagraph
' Pop up a message box to show the total number of bullets.
MsgBox ("Bullet number:" & nNumber & "Cyan number:" & cyannum & "Purple number:" & purplenum & "Green number:" & greennum)
End Sub
答案 0 :(得分:0)
编译器反对的不是Font
而是Color
。在查找Range
的字体颜色时,您需要查看Fill
属性。
如果您将代码调整为objParagraph.Range.Font.Fill.ForeColor.RGB
,则可以编译代码。
我从您的代码中获取它,您正在寻找子弹后面的文本颜色,而不是子弹角色?如果您正在寻找子弹角色,请参阅Variatus的评论。
答案 1 :(得分:0)
@Variatus发表的评论绝对正确。有很多方法可以为一个子弹点着色,在编写代码之前,您需要知道作者已经完成了什么。
可以通过突出显示段落并为文本着色来为项目符号点着色。子弹点将采用您的最后一个(即段落)字符的颜色。如果段落包含多种颜色,则Paragraph.Font.Color
属性将返回所有9种',因此您最好的选择是测试最后一个字符的颜色。
假设这是您想要测试项目符号颜色的方式 - 这是一个很大的假设 - 那么您的代码问题不在于Font
属性,而在于{{1 }}不是RGB
的属性。 Color
是一个从RGB值返回long的函数,因此您需要根据以下语法将RGB()
值与Color
进行比较:
RGB(r,b,g)
您的更正后的代码将是这样的:
If ... .Font.Color = RGB(r, b, g) Then