excel - 多列和多表的VBA GoalSeek for循环
问题描述
如何将其更改为 VBA 中的 for 循环?
Sub GoalSeekV1()
Range("E34").GoalSeek Goal:=0, ChangingCell:=Range("Inputs!$F$73")
Range("F34").GoalSeek Goal:=0, ChangingCell:=Range("Inputs!$G$73")
Range("G34").GoalSeek Goal:=0, ChangingCell:=Range("Inputs!$H$73")
Range("H34").GoalSeek Goal:=0, ChangingCell:=Range("Inputs!$I$73")
Range("I34").GoalSeek Goal:=0, ChangingCell:=Range("Inputs!$J$73")
Range("J34").GoalSeek Goal:=0, ChangingCell:=Range("Inputs!$K$73")
Range("K34").GoalSeek Goal:=0, ChangingCell:=Range("Inputs!$L$73")
End Sub
我曾尝试使用 .cell(x, y) 但失败了,请帮忙。
谢谢。
解决方案
这是一种可以通过循环执行此操作的方法:
Sub GoalSeekV1()
Dim rngStartGoal As Range
Set rngStartGoal = Range("E34")
Dim rngStartInput As Range
Set rngStartInput = Range("Inputs!$F$73")
Dim columnOffset As Integer
For columnOffset = 0 To 6
rngStartGoal.Offset(0, columnOffset).GoalSeek Goal:=0, ChangingCell:=rngStartInput.Offset(0, columnOffset)
Next
End Sub
我建议命名起始目标单元格和起始输入单元格,因为您可以在代码中使用这些名称。所以代码将类似于Set rngStartGoal = Range("START_GOAL")
而不是Set rngStartGoal = Range("E34")
. 这还有另一个优点:如果您移动这些单元格,代码仍然可以工作。
推荐阅读
- asp.net-mvc - Bootstrap 4 从右到左自定义文件输入
- php - 多个父类怎么可能?
- python - 无法在带有 PyCharm 的 Anaconda 环境中使用 windpowerlib?
- c# - 我做了一个滑块,可以在主菜单中调整游戏音量,但是当场景更改为实际游戏时音乐恢复正常?
- scala - 为什么除了错误之外我看不到我的演员级别的日志消息
- android - 我的应用未显示清单文件中的名称
- html - 如何从 p 或 div 中抓取文本,输出给出一个空列表或无
- angular - Angular 应用程序中页脚后的额外空白
- amazon-web-services - 如何连接 AWS 账户
- native-base - 本机基础标签 - 知道如何删除标签周围的边框吗?