Для каждого оператора, чтобы цикл по куче значений текстового поля - PullRequest
0 голосов
/ 28 июня 2019

У меня есть несколько текстовых полей, которые будут заполнены значениями, выбранными из выпадающего списка.

Допустим, из 10 текстовых полей значения были заполнены в 5: Rinv1 до Rinv5.

Как я могу просмотреть их и собрать эти значения?

Я пытаюсь использовать цикл for each и собирать эти значения в массив, а затем сохранять эти значения в поле в моей БД.

Rolls = Array(Me.Rinv1, Me.Rinv2, Me.Rinv3)
Dim RollName As Variant

'iterating using For each loop.
For Each Item In Rolls
    RollName = RollName & Item
Next

Forms![LabelSHEETER2].JOB = RollName

Некоторая синтаксическая ошибка.

Ответы [ 3 ]

2 голосов
/ 28 июня 2019

Я бы предложил перебирать имена элементов управления, а не объекты управления, например, что-то вроде следующего:

Dim Itm
Dim RollName As String
For Each Itm in Split("Rinv1 Rinv2 Rinv3")
    RollName = RollName & Me.Controls(Itm).Value
Next Itm
Forms![LabelSHEETER2].JOB = RollName
1 голос
/ 28 июня 2019

Я бы перебрал элементы управления Form и проверил совпадения имен.Таким образом, вам не нужно выходить из окна дизайна формы снова, чтобы изменить свой код или добавить объекты в массив.

Dim ctl As Control
Dim strRollName As String

For Each ctl in Me.Controls
    If ctl.Name Like "Rinv*" Then
        strRollName = strRollName & ctl.Value & " "
    End If
Next ctl
1 голос
/ 28 июня 2019

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

Private Sub CommandButton1_Click()

Dim ctrl As Control
Dim str As String

For Each ctrl In UserForm1.Controls
    If TypeName(ctrl) = "TextBox" Then
        str = str & ctrl.Text
    End If
Next ctrl

MsgBox str

End Sub
...