2016-04-01 177 views
-1

我有一個動態名稱範圍,我想填充用戶窗體ComboBox與。VBA Excel用戶窗體組合框填充/添加

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

如何填充combobox這個範圍,並使用combobox添加和排序進入時的範圍內?

+0

首先,歡迎來到聖ackoverflow。所以Stackoverflow並不是一個完美的地方,「我不知道如何編寫代碼,爲我編寫代碼」,這就是你如何脫穎而出,或許你應該說,並且應該說一些更像「我不喜歡的東西不知道如何對代碼進行編碼,我已經嘗試了X,但是沒有工作,X有什麼問題,我該如何修復X. –

回答

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單擊事件執行範圍

希望這可以讓你在加和排序正確的軌道:)