请求协助解决Purchase_Scenarios宏的VBA代码问题
修改后的VBA代码(满足10次循环需求)
核心修改点
- 将循环终止值
x设为10,确保执行10次循环 - 简化工作表操作,减少不必要的激活/跳转,提升运行效率
- 规范VBA注释格式,增强代码可读性
最终代码
Sub Purchase_Scenarios() Dim s As Integer Dim i As Integer Dim c As Integer Dim x As Integer ' 初始化循环参数:执行10次循环 x = 10 s = 1 ' 绑定Scenario工作表,避免反复激活切换 With Sheets("Scenario") ' 获取初始行号、列号 i = .Range("H14").Value c = .Range("I14").Value Do While s <= x ' 将当前循环序号写入G13单元格 .Range("G13").Value = s ' 调用已验证可用的Solve_All宏计算采购价格 Call Solve_All ' 直接赋值替代复制粘贴,提升效率 .Cells(i, c).Value = Sheets("Inputs").Range("Purchase").Value ' 循环变量递增:序号s加1,目标列号c同步加1 s = s + 1 c = c + 1 Loop End With End Sub
执行逻辑说明
- 初始化循环次数为10,起始序号
s设为1 - 读取Scenario工作表H14的行号、I14的列号作为结果粘贴的起始位置
- 每次循环依次执行:
- 将当前循环序号
s写入Scenario表G13单元格 - 调用Solve_All宏生成采购价格
- 把Inputs表中
Purchase区域的计算结果直接写入Scenario表的指定单元格 - 递增
s和c,直到完成10次循环
- 将当前循环序号
内容的提问来源于stack exchange,提问作者Adi
相关产品推荐
相关产品推荐

