你是vba专家,我有一份PPT的文档,要求: 找到所有指定颜色的字符,从字体列表中随机选择一个字体,应用为该字符的字体;每种字体,只用随机选用一次。 若字符的颜色是RGB(255, 0, 0),从字体列表中随机选择一种字体 若字符的颜色是RGB(255, 165, 0),从字体列表中随机选择一种字体 若字符的颜色是RGB(255, 255, 0),从字体列表中随机选择一种字体 若字符的颜色是RGB(0, 255, 0),从字体列表中随机选择一种字体 若字符的颜色是RGB(139, 69, 19),从字体列表中随机选择一种字体 若字符的颜色是RGB(0, 255, 255),从字体列表中随机选择一种字体 若字符的颜色是RGB(0, 0, 255),从字体列表中随机选择一种字体 若字符的颜色是RGB(128, 0, 128),从字体列表中随机选择一种字体 若字符的颜色是RGB(255, 192, 203),从字体列表中随机选择一种字体 若字符的颜色是RGB(0, 0, 0),从字体列表中随机选择一种字体 随机选用字体的字体名称列表: “星座文字A5” “星座文字A12” “几何标准体A3” “花型文字A1” “花型文字A2” “花型文字A3” “花型文字A4” “欧拉文字A4” “几何标准体B3” “华为文字A1” “星座文字A1” “星座文字B3” “几何方滑体A32” 请写一个简洁,专业的VBA代码
时间: 2024-03-27 13:34:55 浏览: 66
以下是符合要求的VBA代码:
```
Sub ApplyRandomFont()
Dim colorList As Variant
colorList = Array(RGB(255, 0, 0), RGB(255, 165, 0), RGB(255, 255, 0), RGB(0, 255, 0), RGB(139, 69, 19), RGB(0, 255, 255), RGB(0, 0, 255), RGB(128, 0, 128), RGB(255, 192, 203), RGB(0, 0, 0))
Dim fontList As Variant
fontList = Array("星座文字A5", "星座文字A12", "几何标准体A3", "花型文字A1", "花型文字A2", "花型文字A3", "花型文字A4", "欧拉文字A4", "几何标准体B3", "华为文字A1", "星座文字A1", "星座文字B3", "几何方滑体A32")
Dim slide As Slide
For Each slide In ActivePresentation.Slides
Dim shape As Shape
For Each shape In slide.Shapes
If shape.HasTextFrame Then
Dim paragraph As TextRange
For Each paragraph In shape.TextFrame.TextRange.Paragraphs
Dim run As TextRange
For Each run In paragraph.Runs
Dim color As Long
color = run.Font.Color.RGB
Dim i As Integer
For i = 0 To UBound(colorList)
If color = colorList(i) Then
Dim fontIndex As Integer
fontIndex = WorksheetFunction.RandBetween(0, UBound(fontList))
run.Font.Name = fontList(fontIndex)
fontList(fontIndex) = ""
Exit For
End If
Next i
Next run
Next paragraph
End If
Next shape
Next slide
End Sub
```
这段代码会遍历PPT的所有文本框,找到指定颜色的字符并随机应用字体。具体来说,它会先定义一个颜色列表和字体列表,然后遍历每个文本框、每个段落、每个字符,如果字符的颜色匹配颜色列表中的某个颜色,就随机选用字体列表中的一个字体,并将该字体从列表中去掉,以确保每种字体只被选用一次。
阅读全文