P.S. - начну с PS - пока писал ответ, куда-то пропал вопрос...
1. В моём примере выше есть такая кнопка, и есть такая форма с чекбоксами. И массив формируется. Что далее делать с массивом – мне отсюда не видно Т.е. это зависит от Вашего кода/файла/решения.
2. Я выше написал: В модуле: Public wshList Т.е. в модуле нужно объявить публичный массив, а модуль у меня в файле назывался Module1.
Но можно делать и без публичного массива, а передавать его по параметру – например так:
1. в форме (объявляем массив wshList тут)
[vba]
Code
Private Sub CommandButton1_Click() Dim arr, s$, i&, wshList
arr = Array("1-2010", "2-2010", "1-2011", "КОРР-ТП") For i = 0 To UBound(arr) If Me.Controls("CheckBox" & i + 1) Then s = s & arr(i) & "|" Next s = Left(s, Len(s) - 1) wshList = Split(s, "|")
Выборка_по_работодателю wshList
End Sub
[/vba]
2. Ваш код в модуле ('wshList отключено - его получаем как параметр из формы):
[vba]
Code
Sub Выборка_по_работодателю(wshList) Dim VR, x, i&, j As Long, bu, z(), per$ ', t()mwshList(), 'wshList = Array("1-2010", "2-2010", "1-2011", "2-2011", "3-2011", "4-2011", "1-2012", "2-2012", "3-2012", "4-2012") VR = "071-011-" & [N1] With Sheets("Выборка") '... '... 'и т.д.
[/vba]
P.S. - начну с PS - пока писал ответ, куда-то пропал вопрос...
1. В моём примере выше есть такая кнопка, и есть такая форма с чекбоксами. И массив формируется. Что далее делать с массивом – мне отсюда не видно Т.е. это зависит от Вашего кода/файла/решения.
2. Я выше написал: В модуле: Public wshList Т.е. в модуле нужно объявить публичный массив, а модуль у меня в файле назывался Module1.
Но можно делать и без публичного массива, а передавать его по параметру – например так:
1. в форме (объявляем массив wshList тут)
[vba]
Code
Private Sub CommandButton1_Click() Dim arr, s$, i&, wshList
arr = Array("1-2010", "2-2010", "1-2011", "КОРР-ТП") For i = 0 To UBound(arr) If Me.Controls("CheckBox" & i + 1) Then s = s & arr(i) & "|" Next s = Left(s, Len(s) - 1) wshList = Split(s, "|")
Выборка_по_работодателю wshList
End Sub
[/vba]
2. Ваш код в модуле ('wshList отключено - его получаем как параметр из формы):
[vba]
Code
Sub Выборка_по_работодателю(wshList) Dim VR, x, i&, j As Long, bu, z(), per$ ', t()mwshList(), 'wshList = Array("1-2010", "2-2010", "1-2011", "2-2011", "3-2011", "4-2011", "1-2012", "2-2012", "3-2012", "4-2012") VR = "071-011-" & [N1] With Sheets("Выборка") '... '... 'и т.д.
Спасибо! Я сначала написал - а потом попробовал еще раз разобраться - вроде понял - и поэтому удалил свой вопрос! Возник другой - это для каждого моего модуля нужно будет отдельную форму делать? Модули делают разные вещи и объединить их в один не получается - а указание - какие периоды использовать для расчета необходимы!
Спасибо! Я сначала написал - а потом попробовал еще раз разобраться - вроде понял - и поэтому удалил свой вопрос! Возник другой - это для каждого моего модуля нужно будет отдельную форму делать? Модули делают разные вещи и объединить их в один не получается - а указание - какие периоды использовать для расчета необходимы!Ed_Vard
Тогда так, как я выше написал, делать невыгодно. Т.к. тогда форме нужно передавать, кто её вызвал, и соответственно форма туда и должна посылать массив.
Лучше делать по алгоритму, как я в начале написал - 1.объявляем публичный массив. 2.из любого модуля вызываем одну форму, которая формирует этот массив. 3.в любом модуле используем этот массив.
Т.е. так: в модуле
[vba]
Code
Option Explicit Public wshList
Sub tt()'это Ваша процедура, использующая массив Dim i& UserForm1.Show For i = 0 To UBound(wshList) MsgBox wshList(i) Next End Sub
[/vba] в форме
[vba]
Code
Private Sub CommandButton1_Click() Dim arr, s$, i& arr = Array("1-2010", "2-2010", "1-2011", "КОРР-ТП") For i = 0 To UBound(arr) If Me.Controls("CheckBox" & i + 1) Then s = s & arr(i) & "|" Next s = Left(s, Len(s) - 1) wshList = Split(s, "|") Me.Hide End Sub
[/vba]
Тогда так, как я выше написал, делать невыгодно. Т.к. тогда форме нужно передавать, кто её вызвал, и соответственно форма туда и должна посылать массив.
Лучше делать по алгоритму, как я в начале написал - 1.объявляем публичный массив. 2.из любого модуля вызываем одну форму, которая формирует этот массив. 3.в любом модуле используем этот массив.
Т.е. так: в модуле
[vba]
Code
Option Explicit Public wshList
Sub tt()'это Ваша процедура, использующая массив Dim i& UserForm1.Show For i = 0 To UBound(wshList) MsgBox wshList(i) Next End Sub
[/vba] в форме
[vba]
Code
Private Sub CommandButton1_Click() Dim arr, s$, i& arr = Array("1-2010", "2-2010", "1-2011", "КОРР-ТП") For i = 0 To UBound(arr) If Me.Controls("CheckBox" & i + 1) Then s = s & arr(i) & "|" Next s = Left(s, Len(s) - 1) wshList = Split(s, "|") Me.Hide End Sub