Excel VBA:为什么我的范围变量无论设置为什么都不返回任何内容?

Excel VBA:为什么我的范围变量无论设置为什么都不返回任何内容?,excel,vba,Excel,Vba,我试图在工作表激活时,用概览工作表上C列的公司名称列表填充一个组合框,列表中的行数可变 以下是我的代码: Private Sub Worksheet_Activate() Dim namerange As Range Dim lastrow As Integer Set wk1 = ThisWorkbook.Worksheets("Financials") Set wk2 = ThisWorkbook.Worksheets("FinancialData") Set Ov = ThisWorkb

我试图在工作表激活时,用概览工作表上C列的公司名称列表填充一个组合框,列表中的行数可变

以下是我的代码:

Private Sub Worksheet_Activate()
Dim namerange As Range
Dim lastrow As Integer

Set wk1 = ThisWorkbook.Worksheets("Financials")
Set wk2 = ThisWorkbook.Worksheets("FinancialData")
Set Ov = ThisWorkbook.Worksheets("Overview")

'Define range of company names
With Ov
lastrow = .Range("C" & .Rows.Count).End(xlUp).Row
Set namerange = .Range(Ov.Cells(6, 3), .Cells(lastrow, 3))
End With

'Add Portfolio names to combobox
With wk1.ComboBox1
.List = namerange
End With
End Sub
我已尝试手动将
namerange
设置为要填充框的实际范围,但无论我尝试将其设置为什么,它都不会返回任何内容,并且
.List
会抛出一个错误


我对VBA的了解非常有限,所以我觉得我错过了一些明显的东西。我感到困惑,因为我在其他地方使用过类似的代码,没有任何问题

您确定在C列中,数据超过了第6行吗?为了一致性,您可能需要将
Set-namerange=.Range(Ov.Cells(6,3),.Cells(lastrow,3))
更改为
Set-namerange=.Range(.Cells(6,3),.Cells(lastrow,3))
(删除冗余的
Ov
)@BruceWayne是的,这就是为什么如此令人困惑的原因。作为参考,在此代码中“lastrow”=43。由于某些原因,将“namerange”设置为“.Range”(“C6:C43”)”也不起作用。我认为您需要转换范围。^
.List=namerange
是对
Range.Value
的隐式成员调用,它为您提供了一个二维数组,但
.List
可能需要一个一维数组。尝试
.List=Application.Transpose(namerange.Value)