如何修改循环GoalSeek的VBA代码以避免空白单元格报错?
整合非空判断后的VBA代码
直接给你修改好的完整代码,核心是给GoalSeek操作加上非空判断,同时优化了冗余的Select操作:
Sub Button2_Click() ' ' Button2_Click Macro ' Dim i As Integer For i = 13 To 2000 ' 判断目标单元格(AS列第i行)是否非空,非空才执行GoalSeek If Range("AS" & i).Value <> "" Then Application.CutCopyMode = False Range("AS" & i).GoalSeek Goal:=0, ChangingCell:=Range("AL" & i) End If Next i End Sub
关键修改说明:
- 用
If Range("AS" & i).Value <> "" Then包裹住GoalSeek的执行逻辑,只有当目标单元格(AS列对应行)不为空时才运行GoalSeek,彻底避免空单元格触发的报错。 - 移除了原代码中不必要的
Select操作(包括选中单元格和按钮),VBA直接操作单元格对象比依赖选中状态更高效、更稳定。 - 保留了一次
Application.CutCopyMode = False,取消剪切/复制状态,避免后续操作受影响。
内容的提问来源于stack exchange,提问作者Snehit
相关产品推荐
相关产品推荐

