Excel打开工作簿后Enter键触发宏失效问题求助
问题描述
已创建宏实现:当B1单元格激活时按下Enter键,切换至B4单元格。相关代码如下:
- Module2代码:
Sub B1ToB4() Range("B4").Select End Sub
- Sheet1代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If ActiveCell.Address = "$B$1" Then Application.OnKey "{ENTER}", "B1ToB4" Application.OnKey "~", "B1ToB4" Else Application.OnKey "{ENTER}" Application.OnKey "~" End If End Sub
- ThisWorkbook代码:
Private Sub Workbook_Open() Range("B1").Select End Sub
打开工作簿后按下Enter键,宏未生效,激活单元格变为B2。原因是Worksheet_SelectionChange事件需要工作表选区发生变更才会触发,打开工作簿直接选中B1时没有变更动作,导致Enter键绑定未生效。
解决方案
提供两种可行方法:
方法一:在Workbook_Open中手动绑定Enter键
修改ThisWorkbook的代码,选中B1后直接完成Enter键的绑定:
Private Sub Workbook_Open() Sheet1.Range("B1").Select ' 直接绑定Enter键到目标宏 Application.OnKey "{ENTER}", "B1ToB4" Application.OnKey "~", "B1ToB4" End Sub
方法二:主动触发SelectionChange事件
在Workbook_Open中选中B1后,手动调用Sheet1的Worksheet_SelectionChange事件,传入B1作为参数:
Private Sub Workbook_Open() Dim targetRange As Range Set targetRange = Sheet1.Range("B1") targetRange.Select ' 主动触发选区变更事件 Sheet1.Worksheet_SelectionChange targetRange End Sub
两种方法都能实现打开工作簿后无需额外操作,按下Enter直接切换到B4。
内容的提问来源于stack exchange,提问作者cxrbon
相关产品推荐
相关产品推荐

