基于当前字体颜色在两种字体颜色(或案例)之间切换的VBA代码
问题描述:
我正在尝试编写一个允许我在字体颜色之间切换的宏。为了保持这个简单,让我们只说两种字体颜色。从黑色到蓝色或蓝色到黑色。基于当前字体颜色在两种字体颜色(或案例)之间切换的VBA代码
但是,我想让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
答
从@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
答
我能想到的唯一的办法将是一个可怕的杂牌组装电脑:使用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
+0
谢谢您的帮助和建议! – Growth128
答
这里是要找出哪些颜色的按钮
选择它是一个杂牌虽然
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
办法'如果Selection.font.ThemeColor = xlThemeColorAccent1 then' ... ? – SeanC
谢谢,感谢帮助。你的if-then语句肯定会做到这一点。不过,我只是注意到,通过试图简化我的问题使其更容易理解,因此将其划分为2个案例(黑色或蓝色)可以消除其他一些问题。有没有办法确定工具栏上的字体颜色选择?(而不是活动单元本身,我开始相信这是不可行的。) – Growth128
因此,您想知道用户当前选择的字体颜色,而不仅仅是目前的选择? – SeanC