簡體   English   中英

VBA Excel將具有動態大小的范圍添加到組合框列表

[英]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.

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