繁体   English   中英

使用RowSource属性填充Excel VBA中的组合框

[英]Using RowSource Property to Fill ComboBox in Excel VBA

我试图用等于数据表第一列的选择填充ComboBox,并不断获取

运行时错误380

我想我可以使用loop和AddItem语句,但是由于我希望它会变大(几百个条目),因此宁愿远离可能减慢执行速度的循环。 对我在做什么错有任何想法吗?

Private Sub ClientNameComboxAdd_Enter()
Dim sht As Worksheet
Dim LastRow As Long, UseRow As Long
Dim NameFind As Range
Set sht = ThisWorkbook.Worksheets("Client Info")
LastRow = sht.ListObjects("Clients").Range.Rows.Count
If LastRow = 2 And sht.ListObjects("Clients").DataBodyRange(1, 1) = "" Then
    MsgBox "Can't Add a New Plan With No Clients Entered"
    Exit Sub
End If
ClientNameComboxAdd.RowSource = sht.ListObjects("Clients").ListColumns(1).DataBodyRange
End Sub

问题出在倒数第二行-ClientNameComboxAdd.RowSource ...第一部分,在将客户端添加到表之前起作用了,似乎工作正常。

任何想法将不胜感激。

我是这样做的。 完全没有VBA代码。 只是Excel 100%。

首先,我创建了一个名为“ T_DATA”的表,其中包含2列COUNTRY和CONTINENT,然后添加了3条记录:

    Country         Continent
United States        America
Spain                 Europa
Germany               Europa

之后,我创建了一个名为RANGECOMBOBOX的范围,其来源是表的“国家/地区”列。 查看图片:

在此处输入图片说明

您必须确保此命名范围引用表的列。 就我而言,只是“ = T_DATA [国家]”。

之后,我插入了组合框并右键单击它,在CONTROL选项卡上,将“输入范围”设置为我之前创建的命名范围,在我的情况下是RANGECOMBOBOX:

在此处输入图片说明

第三步是测试组合框是否获取“国家/地区”列的值,并且可以:

在此处输入图片说明

现在是最终测试,我在表中插入了2条新记录(中国和日本值),并且通过将记录添加到表中,组合框立即更新。

在此处输入图片说明

希望这可以帮助您轻松完成任务。 您可以执行的其他选择与我相同,但首先激活宏记录器并检查代码。 也许可以帮助您解决问题。

更新的答案:

然后尝试

Private Sub UserForm_Initialize()
Me.ClientNameComboxAdd.RowSource = "RangeCombobox"
End Sub

这在我的用户表单上起作用,并且组合框加载了国家/地区。 但是,请记住,每次在表中插入新记录时都要卸载并再次加载表单,以更新组合框。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM