簡體   English   中英

VBA中的Excel宏-如何應用循環向下移動列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM