Подскажите, пожалуйста, как правильно создать функцию и ее вызвать.
У меня есть программный код, который выполняется для значения к примеру "Ручка", но мне нужно выполнить тоже самое только для "Карандаш", а потом для "Ластик". я так полагаю, что это будет удобно сделать через function, но к сожалению не могу уловить полной сути как правильно ей пользоваться. Сам программный код не возвращает результат, а работает как редактирование листа для значения Ручка, потом для Карандаш, потом для Ластик. Благодаря функции хочу сократить длину программного кода [vba]
Код
Sub process() For i=1 to 3 If item="Ручка" then Row(i).Copy next i End Sub
[/vba][moder]Правила п.3. Без файла-примера мало что понятно. И вопрос не общего характера.
Добрый день!
Подскажите, пожалуйста, как правильно создать функцию и ее вызвать.
У меня есть программный код, который выполняется для значения к примеру "Ручка", но мне нужно выполнить тоже самое только для "Карандаш", а потом для "Ластик". я так полагаю, что это будет удобно сделать через function, но к сожалению не могу уловить полной сути как правильно ей пользоваться. Сам программный код не возвращает результат, а работает как редактирование листа для значения Ручка, потом для Карандаш, потом для Ластик. Благодаря функции хочу сократить длину программного кода [vba]
Код
Sub process() For i=1 to 3 If item="Ручка" then Row(i).Copy next i End Sub
[/vba][moder]Правила п.3. Без файла-примера мало что понятно. И вопрос не общего характера.Дмитрий_С
Подозреваю, что этот код вы хотите использовать внутри другого макроса. Существует два основных способа для обращения к заранее подготовленным кускам кода: через обращение к функции, что больше всего подходит, когда надо вернуть какие-то значения, и через обращение к макросу же. В Вашем случае Вы проводите некоторые действия, поэтому лучше обращаться как к макросу, а не функции. Выглядеть это может примерно так:
[vba]
Код
Sub Main() 'Some code... Call process(Range("B2:B4")) 'Some code... End Sub
Sub process(RngX As Range) Dim i As Long For i = 1 To 3 If RngX.Cells(i, 1).Value = "Ручка" Then Rows(i).Copy Next i End Sub
[/vba]
Дмитрий_С, здравствуйте.
Подозреваю, что этот код вы хотите использовать внутри другого макроса. Существует два основных способа для обращения к заранее подготовленным кускам кода: через обращение к функции, что больше всего подходит, когда надо вернуть какие-то значения, и через обращение к макросу же. В Вашем случае Вы проводите некоторые действия, поэтому лучше обращаться как к макросу, а не функции. Выглядеть это может примерно так:
[vba]
Код
Sub Main() 'Some code... Call process(Range("B2:B4")) 'Some code... End Sub
Sub process(RngX As Range) Dim i As Long For i = 1 To 3 If RngX.Cells(i, 1).Value = "Ручка" Then Rows(i).Copy Next i End Sub