通过键盘输入激活SelectionChange上的单元格范围

时间:2015-01-10 11:36:47

标签: excel-vba keyboard-events selectionchanged vba excel

我通过以下excel-vba代码激活工作表上的给定单元格范围:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
' msgbox("Change recognized")
If Sh.Name <> "Spielfeld" Then
    If ActiveCell.Column > 1 Then
        Dim UserSelection As Range
        Set UserSelection = Sh.Range(Cells(1, ActiveCell.Column), Cells(16, ActiveCell.Column))
        UserSelection.Activate
    End If
End If
End Sub

通过鼠标输入更改列/单元格时,代码工作正常。但是,如果我只按左箭头键或右箭头键,则Excel会更改活动的单元格/活动列,而不会选择已定义的UserSelection!然而,当按下箭头键时,子组件本身始终处于激活状态(即使我通过箭头键更改了单元格,也会弹出一个msgbox)。
任何人都可以告诉我为什么在使用箭头键更改列时我的选择不会自动更新?我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您必须选择而不是激活

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name <> "Spielfeld" Then
    If ActiveCell.Column > 1 Then
        Dim UserSelection As Range
        Set UserSelection = Sh.Range(Cells(1, ActiveCell.Column), Cells(16, ActiveCell.Column))
        Application.EnableEvents = False
            UserSelection.Select
        Application.EnableEvents = True
    End If
End If
End Sub