2014-09-16 4 views
0

У меня есть вспомогательный макрос, который в основном работает как конвертер валют, который позволяет пользователю определять свои собственные значения обменного курса. Я тестировал его на одной ячейке и отлично работал, но мне нужно, чтобы он зацикливался и перемещался по строке для диапазона определения. (В настоящее время клетки, определенные в L2, K2 и G», нужно не повторить на L3, K3 и G3 до Ln, Кп и Gn и т.д.)Excel Macro в VBA - Как применить цикл для перемещения столбцов

код выглядит следующим образом:

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

Используйте «For' Loop? Я могу дать вам ответ, но я хочу, чтобы вы сначала попробовали его? –

+0

Почему VBA вообще? Почему бы просто не сделать это с помощью формулы на листе «Brightpear1», которую вы можете перетащить через все нужные вам строки? Я что-то упустил? –

+0

Привет, это часть более крупного макроса, где детали заказа вставляются в один лист, а макрос манипулирует им в другой. –

ответ

0

Вот моя интерпретация. Я не был уверен, как далеко заполнить формулы, поскольку вы только ссылались на это как n, поэтому я использовал нижнюю часть Вставить здесь ' s колонка 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 работает хорошо в этих случаях и обеспечивает легкость расширения в будущем.

+0

Приятный привет, даже не подумал об использовании Select Case! Как я уже сказал, я написал его для одного набора ячеек, поэтому я не писал его правильно для диапазона. Спасибо за вашу помощь –

+0

@ Андерсон - Спасибо! Я сделал три небольших изменения. CCur вместо CDbl, был один отсутствующий один период префикса (.), А lr должен был быть основан на K, а не L, так как случай выбора был основан на K. – Jeeped

Смежные вопросы