VBA代码根据当前字体颜色在两种字体颜色(或个案)之间切换

时间:2017-10-17 20:28:58

标签: excel vba fonts colors case

我正在尝试编写一个允许我在字体颜色之间切换的宏。为了简单起见,我们只说两种字体颜色。从黑色到蓝色或从蓝色到黑色。

但是,我想excel告诉我的宏是否已经选择了黑色或蓝色字体(无论是在当前单元格中还是只是一般)。从那里,确定要改变的颜色。

因此,如果工具栏上的字体颜色选择为黑色,则会运行将字体更改为蓝色(通过运行以下脚本的相应部分)。如果工具栏上的字体颜色选择为蓝色,它将运行将字体更改为黑色(通过运行以下脚本的相应部分)。

下面,我有将字体颜色更改为蓝色或黑色的代码。 这里的问题是我不知道正确的语法或代码让excel确定工具栏上的当前选定的字体颜色(或单元格,如果在工具栏上执行此操作是不可能的)。确定字体颜色是宏的第一部分,这是我遇到的麻烦。

感谢帮助!

Sub toggle()

'need code to determine font color, then to execute appropriate code below
With Selection.font
    .ThemeColor = xlThemeColorAccent1
    .TintAndShade = 0
End With
Exit Sub
blackpath:

With Selection.font
    .ThemeColor = xlThemeColorLight1
    .TintAndShade = 0
End With

End Sub

3 个答案:

答案 0 :(得分:1)

来自@SeanC:

Sub toggle()

    With Selection.font
        If .ThemeColor = xlThemeColorLight1 Then
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0
        ElseIf .ThemeColor = xlThemeColorAccent1 Then
            .ThemeColor = xlThemeColorLight1
            .TintAndShade = 0
        End If
    End With

End Sub

答案 1 :(得分:1)

这是一种找出按钮

中选择了哪种颜色的方法

虽然

是一个kludge
Option Explicit

Sub test()
    Dim aaa As Long
    Dim fontColorButton As Long

    aaa = Range("a1").Font.Color

    Range("a1").Select
    Application.CommandBars.ExecuteMso ("FontColorPicker")  ' click the "font color" button
                                                            ' get the command name from the "customize ribbon" dialog
    fontColorButton = Range("a1").Font.Color
    Range("a1").Font.Color = aaa

    Debug.Print fontColorButton

End Sub

答案 2 :(得分:0)

我能想到的唯一方法就是使用Workbook_SheetChange来获取当前的字体颜色。

Option Explicit

Dim CurCol As Long ' default is: -16776961 you could set this on Workbook_Open

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    CurCol = Target.Font.Color
End Sub