Хорошо, у меня есть пользовательская форма. В этой форме пользователя у меня есть поле со списком, который извлекает свои данные из таблицы, называемой "Списки" (диапазон A2:A49). У меня есть три текстовых поля:"Списки" листа "Покупки" (диапазон D2:D49), "Списки" Plant_Number (диапазон B2:B49) и поле со списком Profit_Center "Списки" (диапазон E2:E49).

Мне нужно три текстовых поля для автозаполнения на основе выбора из поля со списком.

1 ответ1

0

Я думаю, что это должно работать, по крайней мере, в Excel 2011.

В приведенном ниже коде "ComboResult" является выводом вашего поля со списком ("ссылка на ячейку"). Он должен быть введен как ссылка на ячейку в двойных кавычках, то есть "C7".

Аналогично "LookupTable" - это диапазон ячеек в таблице вашего предприятия, то есть «A1:E50». Опять двойные кавычки. Я предполагаю, что ваша таблица поиска находится на Sheet2. Вы можете использовать именованный лист с помощью Sheets("имя листа").Спектр().

Поскольку в поле со списком выводится число (позиция по выбору пользователя в списке), ваша таблица поиска должна иметь столбец индекса в качестве первого столбца. Это будет просто 1,2,3 и т.д. До числа растений в списке.

Sub FillTextbox()
  'Set up variables
    Dim TextboxName As String
    Dim TextboxText As String
    Dim Line1Text As String
    Dim Line2Text As String
    Dim Line3Text As String
  'Assemble the text
    Line1Text = "Plant Number: " &
       Sheet2.Application.WorksheetFunction.VLookup(Range("ComboResult"),
       Sheet2.Range("LookupTable"), 3, False)
    Line2Text = "Purchasing Group: " &
       Sheet2.Application.WorksheetFunction.VLookup(Range("ComboResult"),
       Sheet2.Range("LookupTable"), 4, False)
    Line3Text = "Profit Center: " &
       Sheet2.Application.WorksheetFunction.VLookup(Range("ComboResult"),
       Sheet2.Range("LookupTable"), 5, False)
    TextboxText = Line1Text & vbNewLine & Line2Text & vbNewLine & Line3Text
  'Fill the Textbox
    TextboxName = "TextBox 1"
    ActiveSheet.Shapes(TextboxName).DrawingObject.Text = TextboxText
End Sub

После добавления столбца индекса необходимые данные будут находиться в столбцах 3, 4 и 5 таблицы, и функции vlookup получают эти значения на основе индекса, выбранного в поле со списком.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .