通过键盘输入激活 SelectionChange 上的单元格范围
Activate a cell-range on SelectionChange via keyboard input
我通过以下 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!然而,当按下箭头键时,sub 本身总是被激活(即使我通过箭头键更改单元格,也会弹出一个消息框)。
谁能告诉我为什么在使用箭头键更改列时我的选择没有自动更新?我该怎么做?
您必须Select而不是激活
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
我通过以下 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!然而,当按下箭头键时,sub 本身总是被激活(即使我通过箭头键更改单元格,也会弹出一个消息框)。
谁能告诉我为什么在使用箭头键更改列时我的选择没有自动更新?我该怎么做?
您必须Select而不是激活
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