Настройка VBA text.box в пользовательской форме, равная ячейке или определенному значению из базы данных - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь создать форму пользователя, которая будет автоматически создавать x количество распечатанных форумов пользователей из базы данных. Я не могу понять, как получить определенное значение из базы данных для ввода в определенный текстовый ящик в моей форме пользователя. Прямо сейчас код пройдет через мою базу данных и найдет все мосты, которые являются «плитами», а затем найдет соответствующий номер NBI, но я не могу понять точный синтаксис для использования, это похоже. Я пытался использовать различные методы, но у всех, кажется, есть какая-то проблема. конечная цель - заполнить пользовательскую форму с текстовыми полями NBI NO.(textbox(1)), Local ID No.(textbox(5)), structure No(textbox(4)) и type(textbox(3)).

Sub word()
Dim i As Integer
Dim feat As String

feat = ("Slab")

Range("O4:O13").Clear

For i = 2 To 23089
If Cells(i, 11) = feat Then
    TextBox(1).Text = Cells(i, 11)

Else
End If

Next i

End Sub

1 Ответ

0 голосов
/ 29 июня 2018

Исходя из того, что вы указали в своем вопросе и комментариях, это должно исправить вашу проблему:

ПРИМЕЧАНИЕ: Приведенный ниже код ссылается на данные на «Sheet1», используя пользовательскую форму с именем «UserForm1» и TextBox для этой пользовательской формы с именем «TextBox1».

Sub text()

Dim i As Integer
Dim feat As String

feat = ("Slab")

Range("O4:O13").Clear

For i = 2 To 23089
If Cells(i, 11) = feat Then
    UserForm1.TextBox1.Text = Sheets(1).Cells(i, 11).Text

Else
End If

Next i

End Sub

Я внес изменения в оператор If...Else, я сделал ссылку на пользовательскую форму с UserForm1. Вместо того, чтобы ссылаться на индекс TextBox, я ссылался на него по имени TextBox1 и, наконец, я указал Sheet и какие данные из ячейки я хочу Sheets(1).Cells(i, 11).Text.

При этом код будет циклически проходить по каждой строке листа между 2 и 23089, проверяя столбец «K» для «Плиты». Если он найден, он заполнит TextBox1 "Плиткой".

ПРИМЕЧАНИЕ:

  1. Если вы используете этот код в модуле UserForm, вы должны заменить ссылку UserForm1. на Me..
  2. Если вы хотите, чтобы TextBox заполнял текст из другой ячейки в строке (как вы сказали в своем вопросе), измените индекс столбца в строке UserForm1.TextBox1.Text = Sheets(1).Cells(i, 11).Text с 11 на любой правильный индекс столбца.
  3. Обязательно измените приведенный выше код, чтобы использовать правильные имена объектов (UserForm1 должно быть именем вашей пользовательской формы, TextBox1 должно быть соответствующим именем TextBox и т. Д.) Также не забудьте изменить ссылку Sheets(1). сослаться на правильный лист для вашей рабочей книги.

Я оставлю вам возможность корректировать код для правильной ссылки на ваши значения.

...