Excel VBA,用于更改变量并粘贴其结果的 for 循环
Excel VBA, a for loop for changing a variable and pasting its result
我有一个包含一系列计算的电子表格。我有一个依赖于所有计算的结果单元格。我写了一个宏:
- 询问用户两个数字之间的范围
- 生成两个数字之间间距为 0.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 工作原理的详细信息,很难就如何使其工作给出准确答案。
我有一个包含一系列计算的电子表格。我有一个依赖于所有计算的结果单元格。我写了一个宏:
- 询问用户两个数字之间的范围
- 生成两个数字之间间距为 0.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 工作原理的详细信息,很难就如何使其工作给出准确答案。