我通过以下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)。
任何人都可以告诉我为什么在使用箭头键更改列时我的选择不会自动更新?我怎么能这样做?
答案 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