3

複数の列と行を持つ範囲のデータをリストボックスに配置する方法に問題があります。

複数の列と行を試した範囲の乱数があると仮定します。

ここに画像の説明を入力してください

addItem rng(i、j)を試してみると、すべてが1列になります。

.listも試しましたが、どちらも機能しませんでした。

4

3 に答える 3

8

これはあなたがしようとしていることですか?

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

スナップショット

ここに画像の説明を入力してください

于 2012-05-26T12:26:36.770 に答える
2

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つの列を持っていると仮定しています。

于 2012-05-26T04:08:20.173 に答える
1

foreach を使用して項目をリスト ボックスに追加できます

ActiveSheet.Shapes("lstSample").Select

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

For each 自体は、範囲内の各行と列を反復処理します。

于 2012-05-26T03:29:34.797 に答える