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

VBA中的Excel宏-如何应用循环下移列,vba,excel,if-statement,Vba,Excel,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 I

我有一个子宏,它基本上是一个货币转换器,允许用户定义自己的汇率值。我已经在一个单元格上测试了它,效果很好,但我需要它循环并向下移动一行以定义范围。目前定义的单元格为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,所以我使用了粘贴顺序底部的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方法在这些情况下运行良好,并提供了易于将来扩展的功能。

是否使用For循环?我可以给你答案,但我想让你先试试?为什么是VBA?为什么不在Brightpear1工作表中使用一个公式来实现这一点,您可以拖动所有需要的行-我是否遗漏了什么?嗨,这是一个较大的宏的一部分,其中订单详细信息粘贴到一个工作表中,宏将其处理到另一个工作表中。@SiddharthRout,例如,当我应用For循环时,当我将K2更改为Ki时,我得到了关于标识符的错误?很好,干杯,甚至没有想到使用Select Case!就像我说的,我是为一组单元格写的,所以假设我在一个范围内写的不正确。谢谢你的帮助help@A安德森-谢谢!我做了三个小的修改。CCur代替CDbl,缺少一个前缀周期。lr应该基于K,而不是L,因为所选案例基于K。