我有一些代码可以通过预定的颜色(黑色>红色>绿色>黑色等)切换选定文本的字体颜色。但是,我真正想要做的是让我的演示文稿已经存在的格式更具动态性。
例如,如果我在格式化为蓝色的幻灯片标题的一部分上运行宏,我没有一个好的方法回到原来的蓝色。我曾想过将格式化“复制”到某种变量,但我不确定如何准确地清除变量或将其存储起来以供日后使用。
更可能的是建立某种“上下文”搜索。如果我可以查看所选文本的左侧和右侧,可能会有一些颜色文本的输入(因为它很少需要在文本块中有所不同)。但这很快就超出了我的专业知识。
请参阅下面的代码了解当前设置。
Sub TextColorSwap()
On Error Resume Next
With ActiveWindow.Selection
If .TextRange.Font.Color = RGB(0, 0, 0) Then
.TextRange.Font.Color = vbRed
ElseIf .TextRange.Font.Color = vbRed Then
.TextRange.Font.Color = RGB(0, 153, 0)
Else
.TextRange.Font.Color = RGB(0, 0, 0)
End If
End With
End Sub
专业人士的任何想法?
-R
答案 0 :(得分:0)
这样的某些东西可以让你开始:
Option Explicit
Public bFirstColour As Boolean
Sub TextColorSwap()
' This will mask all errors, and if you don't have your own error handler,
' is bad practice as you'll never know if something's gone wrong.
On Error Resume Next
Dim lColour As Long
Dim lCursor As Long
With ActiveWindow.Selection
If .Type = ppSelectionText Then
' Get the start position of the selected text
lCursor = .TextRange.Start
' If there are characters to the left of the selected text, save the colour and set a flag
If lCursor > 1 And Not bFirstColour Then
lColour = .TextRange.Characters(1).Font.Color
bFirstColour = True
End If
' Toggle the colour
With .TextRange.Font
If .Color = lColour Then
.Color = vbRed
ElseIf .Color = vbRed Then
.Color = RGB(0, 153, 0)
Else
' Reset the colour to the colour fond to the left of the text
.Color = lColour
bFirstColour = False
End If
End With
End If
End With
End Sub