Excel输出变量列表基于下拉菜单

时间:2014-04-11 00:36:40

标签: excel list vba

我对VBA很新,所以希望这不是一个太复杂的问题。 我想要的是在一张纸上的单元格(比如sheet1 A1)中有一个下拉列表(我知道该怎么做),然后根据所选择的内容,下面的单元格将根据另一个表格填充片。

例如,列表中的某些选项可能是“North”“West”等,如果选择“West”,则Sheet2中标记为“West”的所有站点将在sheet1 A2,A3等中返回其站点编号。(可能是B2,B3中的网站名称..如果可能的话)

例如sheet1:

West< - 下拉菜单

28< - 网站号码将自动填写
60个
61个
68个
87个
......

它变得有点复杂,因为我的下拉列表不会全部基于区域,而是基于Sheet2中的一系列列,例如站点类型,站点状态等。

然后在另一个宏中引用A列 - 但此刻必须手动更新,所以我希望它可以基于变量获取列表但是如果它们不是那么可以切割(/删除)一些值需要。

此表需要由完全没有VBA知识的人操作 - 我打算隐藏更复杂的表格,因此不会引起额外的混淆。

由于

1 个答案:

答案 0 :(得分:0)

首先,我使用带有名称的范围来减少对数据长度的检查 写入数据的范围称为" WriteData"。
您在DropDown中写入列表的范围称为" DropDown"。事实上,这些数据可以在以后自动填充 取数据的范围称为" Dati"
我把所有的都放在一张纸上,但都是一样的...
Combobox在单元格中写下选择" B5"并且填充了Range" DropDown" 代码是:

Dim Start As Integer
Dim Row As Boolean
Dim FoundC As Boolean
Start = Range("WriteData").Row
Row = False
FoundC = False
Range("WriteData").Value = ""
For Each xx In Range("Dati")
    If xx.Value = "" Then Exit For
    If Row = False Then
        Row = True
        If xx.Value = Range("B5").Value Then
            FoundC = True
            Cells(Start, 2).Value = xx.Value
        End If
    Else
        Row = False
        If FoundC Then
            Cells(Start, 3).Value = xx.Value
            FoundC = False
            Start = Start + 1
        End If
    End If
Next

是否在ComboBox事件中插入更改。

我根据" Dati"中的所有数据将代码添加到Autofilter Combobox中。范围。

Range("DropDown").ClearContents
Range("Key").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("DropDown"), Unique:=True

The Range命名为" Key"它是#34; Dati"中的专栏。有你想要的钥匙(" West" ...)