在 VBA 中实现切换快捷方式
Implement toggle short-cuts in VBA
让我先感谢您的帮助并原谅我在第一个 post 中的潜在缺点。
描述
我想使用 excel 中的键盘快捷键来快速格式化电子表格。例如,因为我经常使用相同的 4 种字体颜色,所以我想创建一个切换快捷方式(例如,Shift + Ctrl+ K = 蓝色字体,再次按 K,绿色字体,再次按 K 红色字体,再次按它,return 到原始字体颜色)。
当前方法
按下 Shift + Ctrl + K
后,我设法分配了相关的宏
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.OnKey "+^b", "ShortcutsFormatFontColor" End Sub
问题
我很难找到一个解决方案,如果我再次按 Shift + Ctrl + K,我如何调用另一个宏/更改宏 --> 如果我想使用相同的快捷方式切换各种设计案例。
谢谢!
一种方法是......在Workbook_Open中分配给宏键。
Option Explicit
Private Sub Workbook_Open()
Application.OnKey "+^k", "ShortcutsFormatFontColor"
End Sub
创建代码模块并添加循环显示颜色的 ShortcutsFormatFontColor 例程。在此特定示例中,代码更改了所有选定单元格的颜色,但使用所选内容左上角的单元格来确定参考颜色:
Option Explicit
Private Sub ShortcutsFormatFontColor()
Dim vSelection As Range
Dim vNewColor As Long
Set vSelection = Application.Selection
If vSelection.Cells.Count > 0 Then
Select Case vSelection.Cells(1, 1).Font.Color
Case rgbBlue: vNewColor = rgbGreen
Case rgbGreen: vNewColor = rgbRed
Case rgbRed: vNewColor = rgbBlue
Case Else: vNewColor = rgbGreen
End Select
vSelection.Font.Color = vNewColor
End If
End Sub
让我先感谢您的帮助并原谅我在第一个 post 中的潜在缺点。
描述 我想使用 excel 中的键盘快捷键来快速格式化电子表格。例如,因为我经常使用相同的 4 种字体颜色,所以我想创建一个切换快捷方式(例如,Shift + Ctrl+ K = 蓝色字体,再次按 K,绿色字体,再次按 K 红色字体,再次按它,return 到原始字体颜色)。
当前方法 按下 Shift + Ctrl + K
后,我设法分配了相关的宏Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.OnKey "+^b", "ShortcutsFormatFontColor" End Sub
问题 我很难找到一个解决方案,如果我再次按 Shift + Ctrl + K,我如何调用另一个宏/更改宏 --> 如果我想使用相同的快捷方式切换各种设计案例。
谢谢!
一种方法是......在Workbook_Open中分配给宏键。
Option Explicit
Private Sub Workbook_Open()
Application.OnKey "+^k", "ShortcutsFormatFontColor"
End Sub
创建代码模块并添加循环显示颜色的 ShortcutsFormatFontColor 例程。在此特定示例中,代码更改了所有选定单元格的颜色,但使用所选内容左上角的单元格来确定参考颜色:
Option Explicit
Private Sub ShortcutsFormatFontColor()
Dim vSelection As Range
Dim vNewColor As Long
Set vSelection = Application.Selection
If vSelection.Cells.Count > 0 Then
Select Case vSelection.Cells(1, 1).Font.Color
Case rgbBlue: vNewColor = rgbGreen
Case rgbGreen: vNewColor = rgbRed
Case rgbRed: vNewColor = rgbBlue
Case Else: vNewColor = rgbGreen
End Select
vSelection.Font.Color = vNewColor
End If
End Sub