将数据从列拖到列表框

我有2张(Sheet1,Sheet2),其中包含不同的数据。 在VBA中,我有2个列表框,一个用于显示列A(Sheet1),另一个用于显示列A(Sheet2)。 当我执行我的编码时,listbox1和listbox2继续分别显示ActiveSheet列A的数据,而不是Sheet1的数据或Sheet2的数据。

With ListBox1 .ColumnCount = 3 .ColumnWidths = "50" .RowSource = Sheets("Sheet1").Range("A:A").Address End With With ListBox2 .ColumnCount = 3 .ColumnWidths = "50" .RowSource = Sheets("Sheet2").Range("A:A").Address End With 

当你说Sheets("Sheet1").Range("A:A").AddressSheets("Sheet2").Range("A:A").Address ,总会给你$A:$A它会参考activesheet。

试试这个

 .RowSource = Sheets("Sheet1").Name & "!" & _ Sheets("Sheet1").Range("A:A").Address 

要么

 .RowSource = Sheets("Sheet1").Name & "!" & "A:A" 

对于Listbox2也是如此

 .RowSource = Sheets("Sheet2").Name & "!" & _ Sheets("Sheet2").Range("A:A").Address 

要么

 .RowSource = Sheets("Sheet2").Name & "!" & "A:A" 

顺便说一句,我build议find列的最后一行使用THIS ,然后创build您的.RowSource

 .RowSource = Sheets("Sheet1").Name & "!" & _ Sheets("Sheet1").Range("A1:A" & LRow1).Address 

要么

 .RowSource = Sheets("Sheet1").Name & "!" & "A:A" & LRow1 

对于Listbox2也是如此

 .RowSource = Sheets("Sheet2").Name & "!" & _ Sheets("Sheet2").Range("A1:A" & LRow2).Address 

要么

 .RowSource = Sheets("Sheet2").Name & "!" & "A:A" & LRow2