2012-05-26 28 views

回答

4

這是你正在嘗試?

Option Explicit 

Private Sub CommandButton1_Click() 
    Dim ws As Worksheet 
    Dim rng As Range 
    Dim i As Long, j As Long, rw As Long 
    Dim Myarray() As String 

    '~~> Change your sheetname here 
    Set ws = Sheets("Sheet1") 

    '~~> Set you relevant range here 
    Set rng = ws.Range("A1:E5") 

    With Me.ListBox1 
     .Clear 
     .ColumnHeads = False 
     .ColumnCount = rng.Columns.Count 

     ReDim Myarray(rng.Rows.Count, rng.Columns.Count) 

     rw = 0 

     For i = 1 To rng.Rows.Count 
      For j = 0 To rng.Columns.Count 
       Myarray(rw, j) = rng.Cells(i, j + 1) 
      Next 
      rw = rw + 1 
     Next 

     .List = Myarray 

     '~~> Set the widths of the column here. Ex: For 5 Columns 
     '~~> Change as Applicable   
     .ColumnWidths = "50;50;50;50;50" 
     .TopIndex = 0 
    End With 
End Sub 

快照

enter image description here

+0

是Siddhart Rout。這是我已經嘗試了兩天。我真的很感激。 – NCC

1

可以使用的foreach將項目添加到列表框中

ActiveSheet.Shapes("lstSample").Select 

Dim currRange As Range 
With Selection 
    For Each currRange In Range("yourRange") 
     .AddItem currRange.Value 
    Next 
End With 

對於通過在你的射程每一行和每一列本身迭代。

+0

我想有多個列的列表框。您只能將所有數據設置爲1列 – NCC

1

我假設你想填充3列

Dim currRange As Range 
Dim i As Integer 
With Selection 
For Each currRange In Range("yourRange") 
     i = i + 1 
     If i = 1 Then .AddItem cell.Value 
     If i = 2 Then .List(.ListCount - 1, 1) = "1" 
     If i = 3 Then 
      .List(.ListCount - 1, 2) = cell.Offset(0, 2).Value 
      i = 0 
     End If 
Next 
End With 

我假設你有3列。

+0

非常感謝Sudhakar,它取決於範圍 - 爲什麼我要計算範圍的列和行。 – NCC

相關問題