Excel 1004 on for循环

时间:2013-07-27 21:03:46

标签: excel excel-vba vba

为什么在地球上这会继续给我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

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

3 个答案:

答案 0 :(得分:2)

我无法测试它,但我认为在为Coloc分配值时崩溃了。 VBA不知道你在说什么“细胞”。我知道这听起来可能违反直觉,但你需要在Range中指定,而不是之前。

尝试:

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

答案 1 :(得分:2)

不确定在没有更多细节的情况下引发此特定错误的原因,但请尝试完全限定范围对象。

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

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

答案 2 :(得分:1)

作为替代方案,我喜欢使用List来填充组合框:

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,尽管没有任何伤害。