[英]Excel Macro in VBA - How to apply a loop to move down columns
我有一個基本的子宏,可以用作貨幣轉換器,使用戶可以定義自己的匯率值。 我已經在一個單元格上對其進行了測試,並且工作正常,但是我需要它循環並向下移動一行以定義范圍。 (當前定義的單元格為L2,K2和G“,需要在L3,K3和G3上重復直到Ln,Kn和Gn等。)
代碼如下:
Sub Macro9()
'
' Macro9 Macro
'
Dim score As String, result As String
score = Sheets("Paste Orders Here").Range("K2").Value
If score = "USD" Then
result = Sheets("Paste Orders Here").Range("L2") * Sheets("Configuration").Range("C5")
ElseIf score = "EUR" Then
result = Sheets("Paste Orders Here").Range("L2") * Sheets("Configuration").Range("B5")
ElseIf score = "GBP" Then
result = Sheets("Paste Orders Here").Range("L2")
ElseIf score = "" Then
result = Sheets("Paste Orders Here").Range("K2")
End If
Sheets("Brightpearl").Range("G2").Value = result
'
End Sub
謝謝,我知道這可能完全不正確,希望將其應用於多行,但我真的可以使用一些幫助!
這是我的解釋。 我不確定將公式向下填充多遠,因為您僅將其稱為n,所以我使用了Paste Orders Here的L列的底部。
Sub Macro9()
Dim r As Long, lr As Long
With Sheets("Paste Orders Here")
lr = .Cells(.Rows.Count, "K").End(xlUp).Row
For r = 2 To lr
Select Case UCase(.Cells(r, "K").Value)
Case "USD"
Sheets("Brightpearl").Cells(r, "G") = _
CCur(.Cells(r, "L").Value * Sheets("Configuration").Range("C5").Value)
Case "EUR"
Sheets("Brightpearl").Cells(r, "G") = _
CCur(.Cells(r, "L").Value * Sheets("Configuration").Range("B5").Value)
Case "GBP"
Sheets("Brightpearl").Cells(r, "G") = CCur(.Cells(r, "L").Value)
Case Else
Sheets("Brightpearl").Cells(r, "G") = .Cells(r, "K").Value
End Select
Next r
End With
End Sub
我發現Select Case方法在這些情況下效果很好,並為將來的擴展提供了便利。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.