VBA中的Excel宏 - 如何应用循环向下移动列

时间:2014-09-16 14:48:11

标签: excel vba excel-vba if-statement

我有一个子宏,它基本上用作货币转换器,允许用户定义自己的汇率值。我已经在一个单元格上进行了测试并且工作正常,但我需要它循环并向下移动一行来定义范围。 (目前定义的单元格为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

谢谢,我知道这可能完全不正确,因为我想将它应用到多行,但我真的可以使用一些帮助!

1 个答案:

答案 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 方法在这些情况下效果很好,并且为将来的可扩展性提供了便利。