Excel 根据用户窗体上的组合框选择,使用范围填充列表框
从组合框下拉列表中选择一个选项后,我希望列表框根据该选项显示指定范围的结果 我的理解是,在使用正确的值和属性之前,一个简单的If/Then语句就足够了 我有一张有两列的表1 列A命名字母和列B命名数字。 -在A列中,范围为A2=A、A3=B、A4=C、A5=D。 -在B列中,范围B2=1、B3=2、B4=3、B5=4 我想在combobox1中选择范围A2时,在listbox1中显示范围B2 我想使用和理解最简单的方法 下面是一个使用此思维过程的非工作示例Excel 根据用户窗体上的组合框选择,使用范围填充列表框,excel,vba,Excel,Vba,从组合框下拉列表中选择一个选项后,我希望列表框根据该选项显示指定范围的结果 我的理解是,在使用正确的值和属性之前,一个简单的If/Then语句就足够了 我有一张有两列的表1 列A命名字母和列B命名数字。 -在A列中,范围为A2=A、A3=B、A4=C、A5=D。 -在B列中,范围B2=1、B3=2、B4=3、B5=4 我想在combobox1中选择范围A2时,在listbox1中显示范围B2 我想使用和理解最简单的方法 下面是一个使用此思维过程的非工作示例 Private Sub ComboBo
Private Sub ComboBox1_Change()
If Me.ComboBox1.Value = "A" Then
ListBox1.Value = Range(Sheet1!B2)
End If
End Sub
我不确定您是否希望组合框的列A填充是动态的?作为一个快速演示。。。在设计模式下,右键单击组合框>属性>杂项>,然后将ListFillRange设置为A2:A5。这将用该范围的数据填充组合框。双击组合框以访问代码屏幕。根据您自己的控件名称调整以下逻辑:
Private Sub ComboBox1_Change()
If ComboBox1.Value = "A" Then
ListBox1.AddItem ActiveSheet.Range("b2")
End If
End Sub
A=>1
B=>2
ComboBox1.ListIndex将为您提供基于0的所选项目索引
所以我们可以这样写
ListBox1.Value=RangeB&ComboBox1.ListIndex+2.Value我不太确定您想要什么,但考虑到您的用户表单包含一个名为ComboBox1的组合框和一个名为ListBox1的列表框:
Private Sub ComboBox1_Change()
Dim r As Range
Set r = [Sheet1!B2]
ListBox1.Clear
ListBox1.AddItem r.Offset(ComboBox1.ListIndex).Value
End Sub
Private Sub UserForm_Initialize()
Dim r As Range
Set r = [Sheet1!A2:A5]
ComboBox1.List = r.Value
End Sub
如果列B包含范围而不是数字,则可以通过重新放置以下内容来添加另一级别的间接寻址:
ListBox1.Clear
ListBox1.AddItem r.Offset(ComboBox1.ListIndex).Value
借
我遵循的过程总结如下。 UserForm初始化例程设置组合框和列表框之间的关系以及工作表引用。虽然我已经对联系人地址列表的更一般情况进行了分类,这可能对许多人都有用
Private Sub UserForm_Initialize()
Set rData = ActiveSheet.Range("A1").CurrentRegion
Me.ComboBox1.List = rData.Offset(1).Value
Me.ListBox1.ColumnCount = 6
Me.ListBox1.List = Me.ComboBox1.List
End Sub
组合框更改例程具有以下代码
Private Sub ComboBox1_Change()
Me.ListBox1.ListIndex = Me.ComboBox1.ListIndex
End Sub
有一个关闭按钮来关闭表单
私有子cmdClose\u单击
卸下我
端接头
一般性声明如下
Option Explicit
Dim rData As Range
Cotact地址目录的图像附在下面
[![Contact address directory][1]][1]
可以从此处下载示例文件如果您想编辑与ID相关的数据,则最好将其加载到文本框中。
[![Contact address directory][1]][1]