我有2张(Sheet1,Sheet2),其中包含不同的数据。在VBA中,我有2个列表框,一个用于显示列A(Sheet1),另一个用于显示列A(Sheet2)。当我执行编码时,listbox1和listbox2会一直显示ActiveSheet Column 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
答案 0 :(得分:0)
当您说Sheets("Sheet1").Range("A:A").Address
和Sheets("Sheet2").Range("A:A").Address
时,它会始终显示$A:$A
,并且会引用活动表。
试试这个
.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"
BTW 我建议您使用THIS查找列的最后一行,然后创建.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