Не зная ваш макрос, давайте предположим, что у вас есть общий макрос, который сохраняет введенные пользователем в колонке:
Sub InputMacro()
Range("B1:B100").Value = InputBox("What do you want to store in column B")
End Sub
Если вы хотите, чтобы петля над этим, сначала нужно параметризовать макрос, то есть сделать гибкой части, которую вы хотите изменить на каждом шаге цикла. Например. если вы хотите запустить через несколько столбцов, вы можете сделать это:
Sub InputMacro_new(intColNumber As Integer, Optional lngRowNumber As Long = 100)
Cells(1, intColNumber).Resize(lngRowNumber) = _
InputBox("What do you want to store in column " & _
Split(Cells(1, intColNumber).Address, "$")(1))
End Sub
Это теперь принимает параметр intColNumber
, то есть вы можете позвонить InputMacro_New 2
заполнить столбец B. Обратите внимание, что я также предоставил необязательный параметрlngRowNumber
который по умолчанию равен 100. Вам не нужно указывать этот параметр, но если вы хотите, вы можете переопределить значение по умолчанию, например InputMacro_New 2, 50
)
Теперь вы можете создать цикл в другой макрос, который вызывает макрос:
Sub MyLoop()
Dim intCol As Integer, varMaxCols As Variant
varMaxCols = InputBox("How many columns do you want to fill?")
If Not IsNumber(varMaxCols) Then Exit Sub
ElseIf varMaxCols < 1 Or varMaxCols > 255 Then Exit Sub
For intCol = 1 To varMaxCols
InputMacro_new intCol
Next intCol
End Sub
Конечно, если вы хотите, вы можете также комбинировать как в один большой макро - но особ. для больших макросов лучше всего разделить его на более мелкие процедуры.
Пожалуйста, покажите нам свой код. – chuff