【问题标题】:New to VBA, need simple script to check/alter cell value with loopVBA 新手,需要简单的脚本来使用循环检查/更改单元格值
【发布时间】:2020-05-12 21:23:15
【问题描述】:

对不起,首发。

我想要一个 VBA 脚本来更改单元格值,直到另一个单元格值(取决于第一个单元格)满足条件。我想我需要更新单元格,还是自动更新?

到目前为止,我已经达到了这一点:

Sub SetTime()
Dim t As Integer ' additional time in hours (integer)
Dim e As Single ' energy as float
t = 0 ' initialize
e = Range("J35").Value
     While e >= 1
         Range("J32").Value = t
         e = Range("J35").Value
         t = t + 1
    Wend
End Sub

这个脚本应该做什么:

  1. 将单元格 J32 设置为 0
  2. J35 发生变化,因为单元格 J32 发生了变化
  3. 评估单元格 J35 是否满足条件
  4. 如果没有:将单元格J32的单元格值加1,转到步骤2,如果是:转到步骤5
  5. 完成,单元格 J32 应显示最后使用的值

它的作用:

什么都没有

【问题讨论】:

  • 你永远不会修改 J35 所以如果它 >=1 你现在有一个无限循环,是不是
  • 要让您的代码执行任何操作,单元格 A35 必须包含 公式。 请更新您的问题以指定单元格中包含的公式A35
  • @Gary'sStudent 正确,J35 中有一个公式。公式(基本上)是这样的: J35 = H35 / I35 其中 I35 = A1 + J32 和 H35 是一个固定值所以它有点复杂。 A1 中有一个初始值,我想看看我需要等待多少小时,直到商低于 1
  • @Warcupine J35 应在 J32 更改后立即进行修改。我不知道我是否必须明确执行此操作,或者 Excel 是否会自动执行此操作。
  • 根据您提供的有关公式的信息,我无法重现该问题,它对我有用。也许您将计算设置为手动?

标签: excel vba


【解决方案1】:

(评论信息太多。一旦一切都清楚,我会编辑这个作为答案)

所以你想改变一个单元格的内容,从另一个单元格的值改变的那一刻起。在 Excel 中,这可以通过两种方式完成:

  • 使用公式
  • 使用Worksheet_Change事件(输入参数为范围,正在更改)。

您能否介绍一下您想要什么以及为什么要的背景(J32 和 J35 的含义是什么,它们为什么要更改以及它们应该更改为什么)?这可能使您可以做您想做的事情。

【讨论】:

  • 好的。我已经使用公式了。我有一个商(基本上是 J35 / something + J32),我需要这个商低于 1。
  • 您知道 Excel 中的solver 功能吗?你输入一个公式,你说你需要得到哪个值(在你的情况下是 1),你说哪个单元格值可能适合实现这个值,求解器会计算这个。
  • 不!谢谢!我会试试这个!
  • @Dominique 谢谢! Solver给了我正确的答案。我还有一个问题:当我更改两个特定单元格中的任何一个时,有没有办法再次自动运行此过程?
  • 是的,您可以将 Worksheet_Change 事件与求解器结合起来执行此操作。为此,您可以录制一个宏,以了解求解器在 VBA 中的工作原理,并相应地调整录制的宏。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多