我有一个子宏,它基本上用作货币转换器,允许用户定义自己的汇率值。我已经在一个单元格上进行了测试并且工作正常,但我需要它循环并向下移动一行来定义范围。 (目前定义的单元格为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
谢谢,我知道这可能完全不正确,因为我想将它应用到多行,但我真的可以使用一些帮助!
答案 0 :(得分:0)
这是我的解释。我不太确定将公式填入多远,因为您只将其称为 n ,因此我使用了在此处粘贴订单'第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 方法在这些情况下效果很好,并且为将来的可扩展性提供了便利。