如何将VBA中重复的GoalSeek代码改写为适用多列的For循环
VBA循环改写解决方案
你可以通过循环控制列偏移量批量调用GoalSeek方法,符合.Cells(x,y)写法要求的实现代码如下:
Sub GoalSeek_LoopVersion() Dim offsetNum As Integer ' 遍历E34:K34共7个单元格,偏移量从0到6 For offsetNum = 0 To 6 ' 当前工作表E列对应列号5,Inputs工作表F列对应列号6,同步向右偏移 ActiveSheet.Cells(34, 5 + offsetNum).GoalSeek _ Goal:=0, _ ChangingCell:=Sheets("Inputs").Cells(73, 6 + offsetNum) Next offsetNum End Sub
补充说明
- 如果目标单元格所在工作表不是运行代码时的激活工作表,建议将
ActiveSheet替换为具体工作表名称,例如Sheets("结果表").Cells(34,5+offsetNum),避免执行位置出错 - 若需要处理GoalSeek求解失败的场景,可以在循环内添加
On Error Resume Next等错误捕获逻辑避免代码中断
内容的提问来源于stack exchange,提问作者Jason Wong
相关产品推荐
相关产品推荐

