Excel VBA,用于更改变量并粘贴其结果的 for 循环

Excel VBA, a for loop for changing a variable and pasting its result

我有一个包含一系列计算的电子表格。我有一个依赖于所有计算的结果单元格。我写了一个宏:

  1. 询问用户两个数字之间的范围
  2. 生成两个数字之间间距为 0.5 的范围
  3. 对于每个数字,将此数字添加到指定单元格并等待处理
  4. 将结果单元格复制到摘要单元格
  5. 对范围内的所有数字重复

这个例程中的第 4 个是我唯一的问题。我似乎无法将每个循环的结果粘贴到不同的单元格中。例如,对于 1 到 3 之间的范围,我应该有 5 个值。我希望将这些值粘贴到它们的压力值旁边。

  Sub pressureOptimization()
'
' pressureOptimization Macro
'

    p1 = InputBox("Give lower pressure limit")
    p2 = InputBox("Give higher pressure limit")

    Application.ScreenUpdating = False

    For StartNumber = p1 To p2 Step 0.5

        Range("D21").Select
        ActiveCell.FormulaR1C1 = StartNumber
        Range("C34").Select
        Selection.Copy
        Sheets("Result").Select
        Range("C2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("Main Simulation").Select

        Next StartNumber
        Application.ScreenUpdating = True
End Sub

这在 python 中相当简单,但在 VBA 中稍微复杂一些。有任何想法吗?

我对你的代码有点困惑,我不知道你为什么要粘贴 Results!C2 如果你想把它贴在你的压力值旁边。这是将它放在 StartNumber 变量单元格旁边的代码,我假设这些单元格位于主模拟 sheet.

Sub pressureOptimization()
'
' pressureOptimization Macro
'
Dim x As Integer
p1 = InputBox("Give lower pressure limit")
p2 = InputBox("Give higher pressure limit")

Application.ScreenUpdating = False

x = 0

For StartNumber = p1 To p2 Step 0.5

    Sheets("Main Simulation").Cells(21 + x,4).Value = StartNumber
    Sheets("Main Simulation").Cells(21 + x,5).Value = Sheets("Result").Range("C34").Value

    x = x + 1

Next StartNumber

Application.ScreenUpdating = True

End Sub

如果 Results!C34 仅从 'Main Simulation'!D21 更新,那么我建议做任何结果计算 Results!C34 直接在您的代码中进行。但是,如果没有更多关于单元格中的内容以及 sheet 工作原理的详细信息,很难就如何使其工作给出准确答案。