You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel多场景运行GoalSeek后存储变更值的VBA宏故障问询

VBA GoalSeek 结果写入False问题修复方案

核心问题原因

  • 常量tolerance类型定义错误:你将它声明为Long长整型,赋值0.01时会被VBA自动强制转换为整数0,导致你的容错判断实际变成要求B95的值和目标值完全相等,只要有微小误差就会走Else分支写入False
  • 变量PurchasePrice类型定义错误:声明为Integer整数型,若B4的求解结果为小数会被自动取整,导致存储结果失真
  • 写入位置偏差(可选):你当前循环k为8789,写入的是P87P89,如果需要写入P97~P99对应三个场景,需要调整写入行的索引

修正后代码

Sub Button1_Click()

Dim k As Integer
Dim PurchasePrice As Double ' 改为Double类型适配小数取值
Const tolerance As Double = 0.01 ' 改为Double类型支持小数容错范围

For k = 87 To 89
    Range("B95").GoalSeek Goal:=Cells(k, "O"), ChangingCell:=Range("B4")
      
    If Cells(95, "B").Value <= Cells(k, "O") + tolerance And Cells(95, "B").Value >= Cells(k, "O") - tolerance Then
        PurchasePrice = Range("B4").Value
        ' 要写入P97~P99就把下面的k改成k+10即可
        Cells(k, "P").Value = PurchasePrice
    Else
        Cells(k, "P") = False
    End If
        
Next k

End Sub

额外说明

GoalSeek方法执行完成后,目标单元格和调整单元格的值会自动更新,不需要额外加等待逻辑,直接读取即可正常存入结果。

内容的提问来源于stack exchange,提问作者Breadguy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:09:03