www.ПЕРВЫЕ ШАГИ.ru :: Шаг 46 - Доступ к одинаковым элементам управления

VBA

Шаг 46 - Доступ к одинаковым элементам управления

Артем привет!
Есть вот такой код:
	str1.Cells(kod_filiala + 6, 4) = Val(Form2.TextBox1.Text)
	str1.Cells(kod_filiala + 6, 5) = Val(Form2.TextBox2.Text)
	str1.Cells(kod_filiala + 6, 6) = Val(Form2.TextBox3.Text)
	str1.Cells(kod_filiala + 6, 7) = Val(Form2.TextBox4.Text)
	str1.Cells(kod_filiala + 6, 8) = Val(Form2.TextBox5.Text)
	str1.Cells(kod_filiala + 6, 9) = Val(Form2.TextBox6.Text)
	str1.Cells(kod_filiala + 6, 10) = Val(Form2.TextBox7.Text)
	str1.Cells(kod_filiala + 6, 11) = Val(Form2.TextBox8.Text)
Возможно ли все эту писанину заменить на такую
	For i=1 to n
		Условия ......
	end if 
т.е. чтобы ТекстБоксы перебирались как массив.
С Уважением, Владимир.
**********************************************
With best wishes, Vladimir(Владимир)
My E-mail [email protected] (text only, koi-8 only, 60 kb),
          [email protected] (all formats).
My Web: http://stilvlad.chat.ru
**********************************************
*Пожалуйста цитируйте всю переписку со мной*

Чтож давайте попробуем. Создаем книгу. На ней расположим именованные ячейки.

TB1
TB2
TB3
TB4

46_1.gif (3563 b)

Создали форму и на ней элементы TextBox. Внимание, сначала создавайте TextBox, а потом кнопки, это позволит избежать проверки типов для Controls. Имена:

TBB1
TBB2
TBB3
TBB4

46_2.gif (8277 b)

Код по кнопке "ДА":

Private Sub CommandButton1_Click()
	' объект элемент управления
	Dim objObject As Control
	' объект диапазон
	Dim raRange As Range
	' строка с адресом диапазона
	Dim stAdders As String
	' цикл по всем элементам управления
	For x = 0 To UserForm1.Controls.Count - 3
		' присвоить обьекту элемент управления
		Set objObject = UserForm1.Controls.Item(x)
		' создать адрес ячейки
		stAdders = "TB" + LTrim(Str(x + 1))
		' получить диапазон
		Set raRange = Range(stAdders)
		' присвоить ему значение из элемента управления
		raRange.Value = objObject.Text
	Next x
	' закрыть форму
	Unload Me
End Sub

Код кнопки "нет":

Private Sub CommandButton2_Click()
	Unload Me
End Sub

Запускной макрос:

Sub TestForm()
	UserForm1.Show
End Sub

Вот и все. Попробуйте. Можете загрузить проект и посмотреть.


Загрузить проект | Предыдущий Шаг | Следующий Шаг
Автор Каев Артем.