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

时间:2016-02-16 11:36:05

标签: excel vba user-input

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

  1. 询问用户两个数字之间的范围
  2. 生成两个数字之间间距为0.5的范围
  3. 对于每个号码,将此号码添加到指定的小区并等待处理
  4. 将结果单元格复制到摘要单元格
  5. 重复范围内的所有数字
  6. 这个例程中的第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中稍微复杂一些。有任何想法吗?

1 个答案:

答案 0 :(得分:2)

我对你的代码感到有点困惑,我不知道你为什么要粘贴在结果中!如果你想要它压在你的压力值旁边那么。下面是将它放在StartNumber变量单元格旁边的代码,我假设它们位于主模拟工作表上。

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更新,那么我建议做任何结果计算结果!C34直接在您的代码中进行。但是,如果没有关于单元格中的最新信息以及工作表如何工作的详细信息,很难给出关于如何使其工作的确切答案。