Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 根据用户窗体上的组合框选择,使用范围填充列表框_Excel_Vba - Fatal编程技术网

Excel 根据用户窗体上的组合框选择,使用范围填充列表框

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

从组合框下拉列表中选择一个选项后,我希望列表框根据该选项显示指定范围的结果

我的理解是,在使用正确的值和属性之前,一个简单的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 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]