VBA Excel UserForm ComboBox填充/添加

时间:2016-04-01 22:59:53

标签: excel vba excel-vba combobox userform

我有一个动态名称范围,我想用其填充UserForm ComboBox

Range1=OFFSET(Sheet1!$A$1,1,0,COUNTA(Sheet1!$A:$A)-1,1)

如何使用此范围填充combobox并使用combobox在输入时添加和排序范围?

1 个答案:

答案 0 :(得分:1)

免责声明:我不打算在盘子上给你代码,但我肯定可以让你走上正轨:)

第一件事

COUNTA(Sheet1!$A:$A)-1是查找最后一个行号的错误方法。如果Col A有空白怎么办?

请改用=MAX((A:A<>"")*(ROW(A:A)))。这是一个数组公式。这意味着如果直接在工作表中使用它,则必须使用 CTRL + SHIFT + ENTER 。如果您在命名范围内使用它,那么您不必担心它。

enter image description here

<强>其次

要遍历某个范围并添加到组合框,您可以使用此代码

Dim aCell As Range

For Each aCell In MYRANGE
    Combobox1.AddItem aCell.Value
Next aCell

<强>第三

要添加到范围,您只需使用

即可
Range("A1").Value = Combobox1.value

<强>最后

排序范围

'~~> Where ws is the relevant worksheet
ws.Columns("A:AE").Sort Key1:=ws.Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

您可以使用Combobox1点击事件执行范围的添加和排序

希望这能让你走上正轨:)