2016-07-22 103 views
1

我有一个范围,我正在调换和分配给一个带有rowsource的列表框。当我将我的范围(TSelected_Range)分配给rowsource的行上运行我的程序时,出现'Object required'错误。任何想法?需要的对象:VBA Excel

Set Selected_Range = WS_Sel.Range(WS_Sel.Cells(2, 1), WS_Sel.Cells(counter + 1, LstCol1)) 
Dim TSelected_Range As Variant 
TSelected_Range = Application.Transpose(Selected_Range) 

With TabData.DataTable 
    .ColumnHeads = True 
    .ColumnCount = counter + 1 
    .RowSource = TSelected_Range.Value ********errors here 
End With 
+0

声明TSelected_Range作为'Range'而不是' Variant'?例如'Dim TSelected_Range As Range' – Jordan

+0

试过了。它不起作用:( – Liz

回答

2

这应该为你工作我用数组和列表属性来代替:

Set Selected_Range = WS_Sel.Range(WS_Sel.Cells(2, 1), WS_Sel.Cells(counter + 1, LstCol1)) 
Dim TSelected_Range() As Variant 
TSelected_Range = Selected_Range.Value 
TSelected_Range = Application.Transpose(TSelected_Range) 

With TabData.DataTable 
    .ColumnHeads = True 
    .ColumnCount = counter + 1 
    .List = TSelected_Range 
End With 
+0

工作!谢谢! – Liz

1

使用List财产

With TabData.DataTable 
    .ColumnHeads = True 
    .ColumnCount = counter + 1 
    .List = TSelected_Range 
End With 
+0

仍然说'需要的对象':( – Liz

+0

我认为'TabData'是UserForm的名称,而'DataTable'是其中的ListBox控件的名称 – user3598756

+0

这是正确的! – Liz