2016-02-16 24 views
2

我有一個包含一系列計算的電子表格。我有一個依賴於所有計算的結果單元格。我已經寫了宏:Excel VBA,用於更改變量並粘貼其結果的for循環

  1. 詢問用戶對範圍的兩個數字
  2. 生成範圍與兩個數
  3. 之間0.5間距爲每個數之間,添加此編號以指定的細胞,並等待處理
  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中稍微複雜一些。有任何想法嗎?

回答

2

我對你的代碼有點困惑,我不知道你爲什麼粘貼在Results!C2中,如果你希望它緊挨着你的壓力值。這裏是代碼,它會把它放在我假設在Main Simulation工作表上的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在代碼中直接做。但是,如果沒有關於單元格內容以及表單工作原理的更多細節,很難就如何使其工作給出準確答案。

+0

儘管這並沒有完全回答我的問題,但確實讓我走上了正確的道路。我只需要在表單選項上翻轉,然後複製並粘貼,然後使用'='。感謝您的回答:) – Joey