[英]VBA Excel Adding Range With Dynamic Size To Combobox List
我要在工作簿中設置一個范圍,該范圍要設置為我的一個用戶窗體中“組合框”中的項目列表。 問題是范圍可以是任何大小。 我目前通過退出Sub
處理零值情況,但是當范圍中只有一個元素時。
如果有一個元素,則不返回元素數組,而僅返回一個String
元素,並且列表框給我一個錯誤:運行時錯誤381:無法設置List屬性。 無效的屬性數組索引”。 除了為只有一個元素的情況創建例外之外,是否還有其他方法可以解決此問題?
下面是代碼:編輯:修復了程序以准確表示問題。
Private Sub UserForm_Activate()
Dim formList As Variant
Dim lastRow As Long
lastRow = getLastRowInCol(Sheets("HiddenVariables"), "B")
If lastRow = 0 Or lastRow = 1 Then Exit Sub
formList = Sheets("HiddenVariables").Range("B2:B" & lastRow).value 'If lastRow =2 then run-time error 381 is thrown
Me.ComboBox.list = formList
End Sub
一種方法是使用組合框的命名范圍和RowSource
屬性。
定義一個命名范圍:
然后只需設置行源
Option Explicit
Private Sub UserForm_Activate()
Me.ComboBox1.RowSource = "Sheet1!Combo_Source"
End Sub
按照您的方法,使用以下方法:
If IsArray(formList) Then
Me.ComboBox1.List = formList
Else
Me.ComboBox1.List = Split(formList, "") '/Converts str to arr on the fly.
End If
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.