简体   繁体   中英

Excel Add-in: How to remove macro hotkey

How do I remove the hotkey from a macro which does NOT appear in Tools > Macro > Macros?

I installed an add-in and Excel has automatically assigned the hotkey "CTRL+U" to it. I want Ctrl+U to retain its original function, underlining text in a cell.

Please note that the add-in (.xla) is run from the Excel menu bar -- it is NOT visible from Tools > Macros > Macros, so there is no way to alter the hotkey from Tools > Macros > Macros > Options.

I use this add-in in various versions of Excel, so if the instructions vary by version, please let me know.

Thank you!

Additional info: The add-in (I wrote it) does not set a shortcut key. It is being assigned unilaterally by Excel.

Private Sub Workbook_Open()
  Set XLApp = New clsExcelEvents  ' start monitoring events
  Set SC = New clsStatementConverter  ' initialize some variables
  If CountVisibleWorkbooks > 0 Then
     Call SetMenuOptions  ' update the menu bar
  End If  
End Sub

SetMenuOptions():

Public Sub SetMenuOptions(Optional IsDisableOptions As Boolean = False)
' Set the enabled/disabled status of the "Convert to QB" menu options
'
' If config files exist in the same directory as the current workbook,
'   enable the menu options. Otherwise, disable.
' To force the sub-menu to be disabled (last visible workbook is
'   being closed), set IsDisableOptions to True
'
On Error GoTo Error_Handler
Dim blnEnableOptions As Boolean
' Default to menu options not enabled
blnEnableOptions = False
Application.ScreenUpdating = False
'
' Is a visible workbook open?
If (Not IsDisableOptions) And (Not ActiveWorkbook Is Nothing) Then
  ' Yes, there is an active workbook. Are any of my config files in
  ' the same directory as this workbook?
  Dim aryFiles() As String
  aryFiles = GetListOfConfigFiles(ActiveWorkbook.Path)
  ' Are there any files? (is the array initialized?)
  If IsInitializedArray(aryFiles) Then
    If (UBound(aryFiles) > 0) Then
      ' Yes, there is at least one config file
      blnEnableOptions = True
    End If
  End If
End If
'
' If disable: set all options to disabled, except for the "About..."
' If enable: (1) set all _installed_ converters to enabled (if a converter
'                has not been installed, don't enable it)
'            (2) enable all other menu options
'            (3) rebuild the list of config files
Dim cbcMenu As CommandBar
Dim cbcConverterMenu As CommandBarControl
Dim cbcViewConfigMenu As CommandBarControl
Dim cbcControl As CommandBarControl
Dim blnMenuIsInstalled As Boolean
'
Set cbcMenu = Application.CommandBars("Worksheet Menu Bar")
'
' Is the Converter menu installed?
' This Sub is called after the menu is deleted (when the add-in is uninstalled), so
' trap for the menu not existing before enabling/disabling the sub-menu options, below
blnMenuIsInstalled = False
For Each cbcControl In cbcMenu.Controls
  If cbcControl.Caption = "&Convert to QB" Then
    blnMenuIsInstalled = True
  End If
Next
'
If blnMenuIsInstalled Then
  Set cbcConverterMenu = cbcMenu.Controls("&Convert to QB")
  Set cbcViewConfigMenu = cbcConverterMenu.Controls("View config...")
  '
  ' Step 1: Disable/Enable the controls for this menu
  '   If Disable, then disable all controls except "About"
  '   If Enable, then enable all controls for which converters are installed
  For Each cbcControl In cbcConverterMenu.Controls
    ' Keep "About" enabled
    If cbcControl.Caption <> "About..." Then
      cbcControl.Enabled = blnEnableOptions
    End If
  Next
  '
  ' Step 2: Rebuild the list of config files
  If blnEnableOptions Then
    ' If a system configuration file exists in the ActiveWorkbook directory, read it
    SC.ConfigFilePath = ActiveWorkbook.Path & Application.PathSeparator
    ' Test for the system config filename
    SC.SystemConfigFilename = GetConfigFilename(SC, True)
    ' Was a system config file found?
    If SC.SystemConfigFilename <> "" Then
      ' Yes, get user settings from the config file
      Call GetConfigSettings(SC.ConfigFilePath, SC.SystemConfigFilename)
    End If
    '
    ' Delete the existing menu options to view config files
    For Each cbcControl In cbcViewConfigMenu.Controls
      cbcControl.Delete
    Next
    ' Add a menu option to view for each config file
    Dim lCtr As Long, strMenuItem As String
    For lCtr = 1 To UBound(aryFiles)
      strMenuItem = aryFiles(lCtr)
      With cbcViewConfigMenu
        .Controls.Add(type:=msoControlButton).Caption = strMenuItem
        .Controls(strMenuItem).OnAction = "'ThisWorkbook.ViewTextFile """ & strMenuItem & """'"
      End With
    Next
  End If
End If
Application.ScreenUpdating = True
GoTo Exit_Handler

Error_Handler:
  MsgBox Err.Number, "SetMenuOptions", Err.Description, Err.HelpFile, Err.HelpContext
  GoTo Exit_Handler

Exit_Handler:
  Exit Sub

End Sub

Click File > Options > Customize Ribbon then follow these instructions for the addition or removal or shortcuts: https://support.office.com/en-us/article/customize-keyboard-shortcuts-9a92343e-a781-4d5a-92f1-0f32e3ba5b4d

If you created a ribbon the shortcuts should show up under the Customize Ribbon tab. If all else fail you could always reassign the original shortcut to something else as well as to not to collide with the new Excel shortcut assignment.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM