2016-09-15 57 views
0

沒有數據我有以下功能,即時通訊使用來填充從數組數據用戶窗體列表框:Excel VBA - 從數組中填充多列用戶窗體列表框。當陣列僅具有1個項目

Function PopulateListboxWithArray(lstbox As MSForms.ListBox, var As Variant) 

With lstbox 

    If Not IsEmpty(var) Then 
    .Clear 
     .list = Application.Transpose(var) 
     .ListIndex = -1 
    End If 

End With 

End Function 

我的列表框包含兩列具有以下屬性:

enter image description here

問題

在數組中的數據具有ID柱和LastName列。我不想讓用戶看到ID列,所以我在表單中將列寬設置爲0。

當我導入具有多行的數據時,數據按預期顯示在列表框中。

但是,當數組只包含一行數據時,列表框顯示空白!

我已經嘗試刪除上圖中的列寬,當我這樣做並重新導入一行數據時,我得到ID和姓氏堆疊在另一個之上。但是,這不是我想要的結果。

我甚至試圖用.list = var代替.list = Application.Transpose(var)無濟於事。

我在這裏做錯了什麼,還是有更好的方式來填充列表框?

歡呼

回答

0

我已經找到了答案在這個崗位:Adding item in listbox with multiple columns

我需要使用.List物業我的函數現在看起來是這樣的:

Function PopulateListboxWithArray(lstbox As MSForms.ListBox, var As Variant) 

With lstbox 

    If Not IsEmpty(var) Then 
      .Clear 
     If UBound(var, 2) > 0 Then 
      .list = Application.Transpose(var) 
     Else 
      .AddItem var(0, 0) 
      .list(.ListCount - 1, 1) = var(1, 0) 
     End If 

    End If 

End With 

End Function 
0

編輯添加更多「背景」

不太確定你爲什麼使用應用程序n.Transpose()

With lstbox 
     If Not IsEmpty(var) Then 
      .Clear 
      If UBound(var, 1) = 1 Then 
       .AddItem 
       .List(0, 0) = var(1, 1) 
       .List(0, 1) = var(1, 2) 
      Else 
'    .List = Application.Transpose(var) 
       .List = var 
      End If 
      .ListIndex = -1 
     End If 
    End With 

,我通過以下方式填充var

Private Sub UserForm_Initialize() 
    Dim var As Variant 

    With Worksheets("LB") '<--| change "LB" to your actual sheet name 
     var = .Range("B1", .Cells(.rows.Count, "A").End(xlUp)).Value '<--| populate var with columns "A:B" cells values from row 1 down to column "A" last non empty row 
    End With 
    With Me.ListBox1 
     .ColumnCount = 2 '<--| set listbox columns count 
     .ColumnWidths = "0;144" '<--| set listbox columns width 
    End With 
    PopulateListboxWithArray Me.ListBox1, var 
End Sub 
+0

您好,感謝響應。當多行數據返回時需要轉置。我確實嘗試了.list = var,但沒有奏效。歡呼聲 – Nick

+0

@尼克,不客氣。我添加了一些背景知道如何填充'var'並讓它工作 – user3598756