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

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

  1. 要求用户input两个数字之间的范围
  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中,如果你希望在你的压力值旁边。 这里是代码,它会把它放在我假设在主模拟工作表上的StartNumbervariables单元旁边。

 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 

如果结果!C34只是从“主模拟”!D21更新,那么我会build议做任何结果计算结果!C34直接在你的代码中做。 但是,如果没有关于单元格内容和单张工作方式的更多细节,很难就如何使其工作给出准确答案。