为什么在地球上这会继续给我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
请给我一些清晰度,因为键盘将通过屏幕。
答案 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
,尽管没有任何伤害。