Excel VBA 跨工作表调用窗体时CommandButton固定删除Sheet1行的实现方法
VBA代码修改方案
核心问题
原代码未显式指定操作的工作表,Range、Rows等对象默认绑定当前活动工作表,因此跨工作表打开窗体时会误删当前激活工作表的行。
修改后代码
Private Sub BotonBorrarP_Click() Dim i As Integer ' 关闭屏幕更新提升删除效率 Application.ScreenUpdating = False For i = 1 To Sheet1.Range("C1048576").End(xlUp).Row - 1 If ListaIngresos.Selected(i) Then ' 显式指定删除Sheet1的对应行,无需选中操作 Sheet1.Rows(i + 1).Delete End If Next i ' 恢复屏幕更新 Application.ScreenUpdating = True End Sub
调整说明
- 所有单元格、行对象前都添加了
Sheet1.前缀,强制锁定操作对象为Sheet1,不受当前活动工作表影响 - 移除了冗余的
Select+Selection操作,直接调用行对象的Delete方法,执行效率更高,也不会触发工作表视图切换 - 补充了屏幕更新开关逻辑,删除大量数据时不会出现卡顿闪烁
注意事项
如果你的Sheet1是自定义的工作表显示名称(比如已重命名为「收支记录」),可以将代码中的Sheet1替换为Sheets("收支记录")即可适配。
内容的提问来源于stack exchange,提问作者Hector Peguero
相关产品推荐
相关产品推荐

