Я думаю, что это должно работать, по крайней мере, в 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 получают эти значения на основе индекса, выбранного в поле со списком.