Excel VBA需求:双击Sheet2零件编号自动筛选Sheet1并跳转
修正后的BOM双击筛选VBA代码
原代码存在几个关键问题导致「执行错误9」及功能不符:
- 列判断逻辑错误:原代码仅监听A列(Column=1),但需求是监听G2:X10000区域(列号7至24)
- 语法错误:
ActiveCell.Value末尾多了一个多余的句点 - 未处理多单元格选中场景,且使用
ActiveCell不如事件参数Target精准
以下是适配需求的正确代码,需粘贴到Sheet2的代码模块中(右键Sheet2标签→查看代码,粘贴即可):
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ' 限定触发区域:G2到X10000,且仅单个单元格触发 If Not Intersect(Target, Me.Range("G2:X10000")) Is Nothing And Target.Cells.Count = 1 Then Cancel = True ' 取消默认双击编辑行为 With Feuil1.ListObjects("Components_table") ' 先清除原有筛选 If .AutoFilter.FilterMode Then .AutoFilter.ShowAllData ' 针对第3列(C列)筛选当前双击的零件编号 .Range.AutoFilter Field:=3, Criteria1:=Target.Value End With Feuil1.Activate ' 切换到Sheet1 End If End Sub
代码说明:
Intersect(Target, Me.Range("G2:X10000")):判断双击位置是否在目标区域内Cancel = True:避免双击后进入单元格编辑状态,提升操作流畅度- 先清除原有筛选再设置新条件,避免筛选叠加导致的异常
- 使用
Target.Value直接获取双击单元格的值,比ActiveCell更可靠
内容的提问来源于stack exchange,提问作者Simon.G
相关产品推荐
相关产品推荐

