Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

vba - Capturing keydown event of MS Word

I want to capture the backspace event, just do the backspace's action, then add other action, but I am not sure the backspace's original action:Selection. Delete , -1 ?

Sub AddKeyBinding()
    With Application
         ' \ Do customization in THIS document
        .CustomizationContext = ThisDocument

         ' \ Add keybinding to this document Shorcut: Backspace
        .KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyBackspace), _
            KeyCategory:=wdKeyCategoryCommand, Command:="TestKeybinding"
    End With
End Sub

 ' \ Test sub for keybinding
Sub TestKeybinding()
    Selection.Delete , -1 ' I am not sure how to impl the original command
    If Selection.Style = "Some...Style" And Selection.Range.ListFormat.ListString = "" Then
            Selection.Style = "DefaultStyle"
    End If
End Sub
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

At last I try use autohotkey to solve this question,some code like down:


     #IfWinActive,ahk_class OpusApp

      ;回车键
      enter::
         send {enter}
         checkStyle()
         return

     backspace::
         send {backspace}
         checkStyle()
         return



     checkStyle(){
    word:=ComObjActive("word.application")
    if(word.Selection.Style.NameLocal="ListItemStyle" and word.Selection.Range.ListFormat.ListString = "")
    {
        word.Selection.Style := "someStyle"
        TrayTip, hint, style chnaged, 3, 17
    }
     }

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...