簡體   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