0

ユーザーフォームリストボックスに範囲 (A1:E10) からの非連続範囲を表示するコードがあります

Private Sub UserForm_Initialize()
Dim rng As Range

Set rng = Sheet1.Range("A1:E10")

With ListBox1
  .ColumnCount = 3
  .ColumnWidths = "100;100,100"
  ' load 1st, 3rd and 5th columns of range (A,C and E) into listbox
  .List = Application.Index(rng, Evaluate("ROW(1:" & rng.Rows.Count & ")"), Array(1, 3,5))
End With
End Sub

ここで、リストボックスで選択した行を別の範囲 (G1:I1) に戻すためのクリック ボタン コードが必要です。

4

1 に答える 1

1

次のマクロをそのボタンに割り当てます。リストボックスをフォームコントロールと考えています。ActiveX コントロールの場合、.ListBoxes("ListBox1").ListBox1に置き換え、 0から.ListCount-1までのループを開始します。

 Sub Test()

        Dim lngLoop         As Long
        Dim strValue        As String

        With ThisWorkbook.Worksheets("Sheet1")
            With .ListBoxes("ListBox1")
                For lngLoop = 1 To .ListCount
                    If .Selected(lngLoop) Then
                        strValue = strValue & "|" & .List(lngLoop)
                    End If
                Next
           End With
           .Range("G1:I1") = Split(Mid(strValue, 2), "|")
        End With

    End Sub
于 2013-06-13T09:46:09.200 に答える