Как заполнить много texbox с помощью функции цикла в VBA - PullRequest
1 голос
/ 31 мая 2010

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

Поскольку мы не можем назвать текстовое поле как массив (textBox (1), textbox (2) ....), заполнить текстовое поле с помощью функции цикла сложно.

Я пытался использовать свойство tag или tabindex, но я не нашел хорошего способа продолжить .... Кто-нибудь знает простой способ решить эту проблему !!!

Спасибо

Ответы [ 3 ]

1 голос
/ 31 мая 2010

Да, вы можете.

Назовите ваши текстовые поля Textbox1, Textbox2 и т. Д., Затем получите к ним доступ с помощью

Form.Controls("Textbox" & ID)
1 голос
/ 19 августа 2015

вы можете использовать этот код для заполнения нескольких текстовых полей

    Dim rs As Object
    Dim i As Integer
    Dim ctlr As Control
     Set rs = Me.Recordset.Clone
     For Each ctlr In Me.Controls
     If TypeOf ctlr Is TextBox Then
      For i = 0 To ctlr.Controls.Count
      On Error Resume Next
       ctlr.Value = rs!SomeField 
       rs.MoveNext
      Next i
    End If

Next
0 голосов
/ 31 мая 2010

Итерация коллекции элементов управления формы.

Например, скажем, ваша пользовательская форма называется myForm, тогда

myForm.Controls(i)

дает вам дескриптор для любого элемента управления в myForm. Теперь вы можете использовать управляющие свойства для определения того, на что вы смотрите (метка, текстовое поле, кнопка и т. Д.). Я бы посоветовал вам использовать тег , например, хмммм .... "TEXTBOX", чтобы упростить процесс идентификации.

if myForm.Controls(i).Tag="TEXTBOX" then 'it's my textbox ! hurraay!!!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...