循环Excel 1004

为什么地球上这一直给我1004? 工作表名称和代号是相同的,所以它可以引用它,所以为什么我一直得到1004

Public Sub UserForm_Initialize() Dim coLoc As Integer Dim i As Integer Dim ia As Integer coLoc = ThisWorkbook.Worksheets("Company").Range(Cells(2, 1), Cells(Rows.count, 1).End(xlUp)).count For i = 2 To coLoc Step 1 ComboBox1.AddItem (ThisWorkbook.Worksheets("Company").Cells(i, 2).Value) Next i End Sub 

请给我一些清楚,因为键盘将要通过屏幕。

不知道是什么引起这个特定的错误没有更多的细节,但尝试完全限定您的范围对象。

这使用一个稍微不同的迭代方法:

 Public Sub UserForm_Initialize() Dim wb as Workbook: Set wb = ThisWorkbook Dim ws as Worksheet: Set ws = wb.Sheets("Company") Dim colRange as Range Dim cl as Range Set colRange = ws.Range(ws.Cells(2, 1), ws.Cells(ws.Rows.count, 1).End(xlUp)) For each cl in colRange.Cells ComboBox1.AddItem cl.Value Next End Sub 

我无法testing它,但是我认为当你给Coloc赋值的时候它会崩溃。 VBA不知道你在说什么“单元”。 我知道这可能听起来不符合直觉,但是你需要在范围内指定,而不是在之前。

试试:

 With ThisWorkbook.Worksheets("Company") coLoc = Range(.Cells(2, 1), .Cells(.Rows.count, 1).End(xlUp)).count End With 

作为替代scheme,我喜欢使用List来填充combobox:

 Private Sub UserForm_Initialize() Dim wb As Workbook Dim ws As Worksheet Dim colRange As Range Set wb = ThisWorkbook Set ws = wb.Sheets("Company") Set colRange = ws.Range(ws.Cells(2, 1), ws.Cells(Rows.Count, 1).End(xlUp)) ComboBox1.List = colRange.Value End Sub 

没有必要限制Rows.Count ,虽然它没有伤害。