【问题标题】:Implement toggle short-cuts in VBA在 VBA 中实现切换快捷方式
【发布时间】:2020-05-12 01:38:52
【问题描述】:

让我先感谢您的帮助,感谢您在我的第一篇文章中原谅我潜在的缺点。

说明 我想在 excel 中使用我的键盘快捷键来快速格式化电子表格。例如,由于我经常使用相同的 4 种字体颜色,因此我想创建一个切换快捷方式(例如,Shift + Ctrl+ K = 蓝色字体,再次按 K,绿色字体,再次按 K 红色字体,再按一次,返回到原始字体颜色)。

目前的方法 按下 Shift + Ctrl + K 后,我设法分配了相关的宏

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.OnKey "+^b", "ShortcutsFormatFontColor" End Sub

问题 如果我再次按下 Shift + Ctrl + K,我很难找到一个解决方案如何调用另一个宏/更改宏 --> 如果我想使用相同的快捷方式切换各种设计案例。

谢谢!

【问题讨论】:

  • 未测试,但您可以使用If...ThenSelect Case 语句评估当前字体颜色,例如如果是Green,则将字体颜色更改为Red。等
  • 你可能想看看这段代码。 stackoverflow.com/questions/60582649/…。那里的边框颜色发生了变化,但可以轻松修改代码以更改字体颜色。
  • 有一个要循环的值数组,并在每次调用时增加一个索引(如果到达UBound,则返回0)
  • 谢谢!循环通过案例/数组效果很好!

标签: excel vba keyboard-shortcuts


【解决方案1】:

一种方法可能是 ... 在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 2013-10-15
    • 2021-11-24
    相关资源
    最近更新 更多