2016-04-26 7 views
-1

У меня есть макрос, который я настраиваю для каждого параметра каждый раз, когда мне нужно его запускать. Чтобы быть более эффективным, я хотел бы, чтобы макрос захватил значение параметра из другого листа, который я предоставляю, и использую это значение как вход для цикла sub do.Excel VBA: Зацикливание макроса с пользовательскими данными из рабочего листа с выходом в другой

Ниже я изложу свое основное представление о том, что я хотел бы сделать макросом на неязычном языке.

Dim row as Range 
Dim rowCount As Integer 
Dim input1 as String 
Dim input2 as String 
Set worksheet1=Worksheets("Sheet1") 
Set worksheet2=Worksheets("Sheet2") 
rowCount=worksheet1.Cells(Rows.Count,"A").End(xlUp).row 

For i=2 to worksheet1.rowCount 
    Do 
     input1=worksheet1.row("A" & i).value (value is continuous text) 
     input2=worksheet1.row("B" & i).value (value is integer) 
     worksheet2.activate 
      Do     
      *code that relies on the input1 and input2 values to run. 
    Next i 
End 
+0

Используйте диапазон («A» и i) вместо строки («A» и i), и он должен работать нормально. – gtwebb

ответ

0

Ваш макрос будет иметь для этого код. Измените объявление макроса, чтобы передать переменные, которые вы хотите использовать/манипулировать.

Dim row As Range 
Dim rowCount As Integer 
Dim input1 As String 
Dim input2 As String 
Set worksheet1 = Worksheets("Sheet1") 
Set worksheet2 = Worksheets("Sheet2") 
rowCount = worksheet1.Cells(Rows.Count, "A").End(xlUp).row 

For i = 2 To worksheet1.rowCount 
    Do 
     input1 = worksheet1.row("A" & i).Value '(value is continuous text) 
     input2 = worksheet1.row("B" & i).Value '(value is integer) 
     worksheet2.Activate 
      Do 
       MacroCode input1, input2 
      Next 
    Next i 
End 

Sub MacroCode(input1 As String, input2 As Integer) 

End Sub