Excel 2016 用户表单

Excel 2016 用户表单

好的,我有一个用户表单。在这个用户表单上,我有一个组合框,它从名为“列表”(范围 A2:A49)的工作表中提取数据。我有三个文本框:Purchasing_Group“列表”工作表(范围 D2:D49)、Plant_Number“列表”(范围 B2:B49)和 Profit_Center“列表”(范围 E2:E49)组合框。

我需要根据组合框的选择自动填充三个文本框。在此处输入图片描述

答案1

我认为这应该可行,至少在 Excel 2011 中可行。

在下面的代码中,“ComboResult”是组合框的输出(“单元格链接”)。它必须作为双引号中的单元格引用输入,即“C7”。

类似地,“LookupTable”是您的植物表中的单元格范围,即“A1:E50”。同样,双引号。我假设您的查找表在 Sheet2 上。您可以使用 Sheets("sheet name").Range() 使用命名工作表。

因为组合框输出一个数字(列表中用户选择的位置),所以查找表必须有一个索引列作为第一列。它将是 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 函数将根据组合框中选择的索引获取这些值。

相关内容