Исходя из того, что вы указали в своем вопросе и комментариях, это должно исправить вашу проблему:
ПРИМЕЧАНИЕ: Приведенный ниже код ссылается на данные на «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
"Плиткой".
ПРИМЕЧАНИЕ:
- Если вы используете этот код в модуле UserForm, вы должны заменить ссылку
UserForm1.
на Me.
.
- Если вы хотите, чтобы TextBox заполнял текст из другой ячейки в строке (как вы сказали в своем вопросе), измените индекс столбца в строке
UserForm1.TextBox1.Text = Sheets(1).Cells(i, 11).Text
с 11 на любой правильный индекс столбца.
- Обязательно измените приведенный выше код, чтобы использовать правильные имена объектов (
UserForm1
должно быть именем вашей пользовательской формы, TextBox1
должно быть соответствующим именем TextBox и т. Д.) Также не забудьте изменить ссылку Sheets(1).
сослаться на правильный лист для вашей рабочей книги.
Я оставлю вам возможность корректировать код для правильной ссылки на ваши значения.