VBA Ecel UserForm多选,动态项目列表

时间:2017-09-08 11:52:15

标签: vba listbox listobject

我用这条指令做了userForm: http://www.excel-easy.com/vba/examples/multiple-list-box-selections.html

我尝试根据表格进行动态项目列表

With ListBox_1
.RowSource = 
 Worksheets("warianty").ListObjects("in_").ListColumns(1).DataBodyRange
.ColumnHeads = True
.ColumnCount = 3
End With

它显示为空白,没有可供选择的列表。我使用对象表来获取动态范围。当然我可以使用其他解决方案,但这个似乎是可以实现的。

然后我想将每个选定的项目复制到从第一行开始的其他表格。 这是我尝试根据教程中的其他按钮修改的代码。

 Private Sub button_save_Click()
 Dim counter As Integer
 counter = 0
 For i = 0 To ListBox_2.ListCount - 1
 If ListBox_2.Selected(i - counter) Then
 ListBox_2.copy (i - counter) 'it gives error here
Worksheets("dane wejściowe").ListObjects("Tabela41").DataBodyRange(1 + i, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False,         Transpose:=True
 counter = counter + 1
 End If
 End Sub
除了改进代码之外,SB还可以告诉我为什么我不能复制'列表ListBox.value或sth?

1 个答案:

答案 0 :(得分:1)

请尝试以下方法:

<强>代码

     Private Sub UserForm_Initialize()
  With ListBox_1

        .RowSource = Worksheets("warianty").ListObjects("in_1").ListColumns(1).DataBodyRange.Address
        .ColumnHeads = True
        .ColumnCount = 3

        End With
End Sub


        'end this:

        Private Sub button_save_Click()

        For i = 0 To ListBox_2.ListCount - 1
         If ListBox_2.Selected(i) Then

       Worksheets("dane wejsciowe").Select


        Dim new_row As ListRow
        Set new_row = Worksheets("danewejsciowe").ListObjects("Tabela41").ListRows.Add(AlwaysInsert:=True)




        new_row.Range.Cells(1, 1).Value = ListBox_2.List(i)


         End If


        Next
        End Sub