簡體   English   中英

為VBA組合框創建動態范圍

[英]Creating dynamic range for VBA Combobox

目前,我正在Excel VBA上並使用combobox制作用戶表單。 我有一個名為“ Division”的范圍(A2:A61),其中包括公司的部門。 當我將此數據添加到組合行源時,我將命名范圍-分區。 但另一方面,部門是動態的,我的意思是在這一年中創建了新部門。

問題是當我創建新的分區時,我可以在單元格A62上看到其名稱,但其中不包括范圍-命名的分區。 結果,我看不到更新的組合框列表。

首先,我嘗試將范圍選擇為(A:A)並將其稱為除法。 在這種情況下,我可以看到更新的組合框列表,但是范圍內的空白單元格對我來說還帶來其他問題。

其次,我有此代碼,我嘗試將其用作組合框的行源,但出現錯誤。

Set Division = Worksheets("DataCMB").Range(Range("E2"), Range("E1048576").End(xlUp))

請幫忙找出問題所在。

您可以將A2:A61插入表格並定義為“部門”名稱。 因此,當您添加新數據時,新數據將自動包含在“部門”名稱中。

您遇到的第一個問題以及這里的其他一些問題是,您沒有告訴您的第二個和第三個Range調用應該引用哪個工作表,因此在下面的行中,您可以看到我添加了Worksheets(“ DataCMB”)在他們面前。 否則,它將使用ActiveSheet,該ActiveSheet可能未設置為DataCMB,因此它將在其他工作表上查找范圍,而找不到該范圍。

另一個問題是您的.End(xlUp)是在單個單元格而不是范圍內工作的,因此我將其更改為查看整個列,並向下而不是向上查看。 因此,下面的行將為您提供該列中所有內容的全部范圍,但底部不包含任何空格,也不包含標題。

Set Division = Worksheets("DataCMB").Range(Worksheets("DataCMB").Range("E2"), Worksheets("DataCMB").Range("E2:E1048576").End(xlDown))
Private Sub UserForm_Initialize()
  Division = Range(Range("A2"), Range("A2").End(xlDown)).Address
  Me.ComboBox1.RowSource = Division
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM