根据更改的Combobox值设置单元格vlookup值

时间:2015-01-15 11:15:06

标签: excel vba combobox vlookup

我在Excel工作表中输入了combobox。我希望它能够正常工作,以便无法访问VBA的用户可以从dropdown中选择一个值,然后另一个单元格中的值将对此值执行vlookup

在第一个例子中,我插入了一个框,并尝试根据此设置单元格值。

Sub InsertComboBox()

#inserts dropdown box on the front page and sets the values as the list of DMA from the pipe_totals sheet
#this should be the most complete list so will not change dependant on asset

Dim arearange As Range
Set arearange = Sheets("pipe_totals").Range("a:a")
lastrowi = Application.WorksheetFunction.CountA(arearange)

Sheets("front page").Activate
With Range("f5:g5")
Set Combo = ActiveSheet.DropDowns.Add(.Left, .Top, .Width, .Height)

End With

Combo.List() = Sheets("pipe_totals").Range("A2:A" & lastrowi).Value
.Range("k9").Value = Combo.Value 'only works on current combobox value which is 0

End Sub

我可以设置此方式,以便vlookup是动态的,具体取决于用户的选择吗?

2 个答案:

答案 0 :(得分:2)

在此示例中,只需设置正确的组合名称即可。应该没问题,只要你的组合框列出来自"范围(" A2:A"& lastrowi)"的值。如上所述。

Sub "comboname"_Change()
    Dim list_val As Long

    list_val = Worksheets("front page").Shapes("comboname").ControlFormat.Value
    Range("K9") = Worksheets("pipe_totals").Cells((list_val + 1), 1)
End Sub

Sub test()
    Dim z As Shape
        For Each z In Worksheets("front page").Shapes
            Debug.Print z.Name
        Next z
End Sub

答案 1 :(得分:0)

据我了解,您希望每次组合框值更改时,单元格K9也会具有相同的值。是对的吗?如果是这种情况,则右键单击组合框并选择"分配宏"。然后选择"创建"。然后在创建的子内部,它应该如下所示:

Sub "comboname"_Change()

End Sub

您还应该粘贴最终的代码行。

.Range("k9").Value = Combo.Value

这样做意味着您希望每次组合框值更改时都执行该行代码。