Excel ActiveX命令按钮与ActiveX列表框结合使用–;需要VBA代码

Excel ActiveX命令按钮与ActiveX列表框结合使用–;需要VBA代码,excel,listbox,activex,commandbutton,vba,Excel,Listbox,Activex,Commandbutton,Vba,我想创建一个ActiveX命令按钮,该按钮将根据单独的隐藏工作表中的数据填充一个工作表上的单元格(尽管仍在同一工作簿中)。但是,我想让按钮知道根据列表框中的选择提取特定数据 例如:假设某人正在“工作表1”中工作,其中有2个ActiveX列表框和1个ActiveX命令按钮。如果此人在第一个列表框中选择“动物”,则第二个列表框将显示以下动物列表。然后,假设此人在第二个列表框中选择“dog”。然后,我希望ActiveX命令按钮能够识别有人在前面的两个列表框中同时选择了“动物”和“狗”,然后单击时,能够

我想创建一个ActiveX命令按钮,该按钮将根据单独的隐藏工作表中的数据填充一个工作表上的单元格(尽管仍在同一工作簿中)。但是,我想让按钮知道根据列表框中的选择提取特定数据

例如:假设某人正在“工作表1”中工作,其中有2个ActiveX列表框和1个ActiveX命令按钮。如果此人在第一个列表框中选择“动物”,则第二个列表框将显示以下动物列表。然后,假设此人在第二个列表框中选择“dog”。然后,我希望ActiveX命令按钮能够识别有人在前面的两个列表框中同时选择了“动物”和“狗”,然后单击时,能够从单独的隐藏表(“工作表2”)中提取数据以显示在“工作表1”上。换句话说,选择“狗”的数据将隐藏在远离个人的地方,但当他们在第二个列表框中选择“dog”,然后单击ActiveX命令按钮时,数据将显示


我已经知道如何在VBA中为依赖列表框编写代码,但我不确定如何使ActiveX命令按钮依赖于列表框中的选择。这是可能的吗?如果是的话,谁能给我提供一个VBA代码,我可以用它来满足我的规范?此外,是否有人知道ActiveX命令按钮的VBA代码,该按钮将从一张图纸中提取数据,并在另一张图纸上显示数据?欢迎您的任何意见。谢谢

很难具体说明所提供的信息,但希望这能为您指明正确的方向。这假设您的第二个列表框中只有一列:

Sub cmdActiveX_Click()
    Dim strBox1 as String
    Dim strBox2 as String

    strBox1 = Worksheets("SheetWithListBoxes").ListBox1.List(Worksheets("SheetWithListBoxes").ListBox1.ListIndex))
End Sub
更干净的方法可能是:

Sub cmdActiveX_Click()
    Dim lbo as ListBox
    Dim strBox1 as String

    Set lbo = Worksheets("SheetWithListBoxes").ListBox1
    strBox1 = lbo.List(lbo.ListIndex) 
End Sub
因此,您可以从ListIndex获取所选项目的索引,然后将其传递给List方法。这还假设MulitSelect处于禁用状态(单)


玩得开心

好吧,我相信我确实找到了一种方法,通过创建以下模块,让命令按钮从一张工作表中提取数据并将其放在另一张工作表上:

Sub PopulateMain(ByVal lRowNumber As Long)

Dim shReport As Worksheet
Dim shData As Worksheet

' Assign sheets to the variable.
Set shReport = ThisWorkbook.Worksheets("Report")
Set shData = ThisWorkbook.Worksheets("Data")

' Paste the value in sheet Data Range H2 into sheet Report Range C12.
shReport.Range("C14").Value = shData.Range("H2").Value
shReport.Range("C16").Value = shData.Range("I2").Value
shReport.Range("C18").Value = shData.Range("J2").Value
shReport.Range("C20").Value = shData.Range("K2").Value
shReport.Range("K14").Value = shData.Range("L2").Value
shReport.Range("K16").Value = shData.Range("M2").Value
shReport.Range("K18").Value = shData.Range("N2").Value

End Sub
然后使用此代码:

Private Sub CommandButton1_Click()

Call PopulateMain(2)

End Sub

但是,我仍然不知道如何将命令按钮链接到列表框,以便它知道已经做出了特定的选择。因此,同样,如果有人在第一个框中选择了“动物”,在第二个框中选择了“狗”,我需要命令按钮来识别这两个选项,以便从隐藏的工作表中提取正确的数据。

好的,试试这样的方法(顺便问一下,这些是列表框还是组合框?如果它们是列表框还是非列表框,您会对它们的命名感到困惑……如果是组合框,请将As ListBox更改为As ComboBox):


然后使用2个字符串值来查找数据…有意义吗?

我非常感谢您的帮助,但代码仍然有问题。我试图将示例Excel文件附加到此消息,但似乎找不到可能的区域。也就是说,更具体地说,这是每个ActiveX控件的名称s:第一个列表框标题为:“cboCategoryList”,第二个列表框标题为:“cboDependentList”命令按钮标题为:“CommandButton1”带有列表框的工作表标题为:“Report”带有数据的工作表标题为:“data”你尝试过什么?你遇到了什么错误?你从哪里得到了错误?你越具体,你得到的帮助就越多。;)我不断遇到一个错误,大意是:“对象不支持此属性或方法。”我显然尝试过将我的确切名称/数据替换到代码中,但没有用。我想我的问题是,你还想知道什么(或者想让我澄清),以便你更好地了解我在寻找什么。同样,我希望我可以简单地附加我拥有的示例Excel模板,以便您可以准确地看到我正在使用的内容,但似乎没有一个区域可以包含附件。对于初学者,您可以粘贴代码,并共享发生错误的行。
Sub cmdActiveX_Click()
    Dim lboCategory as ListBox
    Dim lboDependent as ListBox
    Dim strBox1 as String

    Set lboCategory = Worksheets("Report").cboCategoryList
    strCategory = lboCategory.List(lboCategory.ListIndex) 

    Set lboDependent = Worksheets("Report").cboDependentList
    strCategory = lboCategory.List(lboCategory.ListIndex) 

End Sub