0

なぜこれが私に1004を与え続けるのですか? Worksheet Name と Codename は同じなので参照できるのに、なぜ 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

キーボードが画面を通過するので、明確にしてください。

4

3 に答える 3

2

テストはできませんが、Coloc に値を代入するとクラッシュすると思います。VBA は、あなたが話している「セル」を認識していません。直感に反するように聞こえるかもしれませんが、Range の前ではなく、Range の中で指定する必要があります。

試す :

With ThisWorkbook.Worksheets("Company")
    coLoc = Range(.Cells(2, 1), .Cells(.Rows.count, 1).End(xlUp)).count
End With
于 2013-07-27T21:19:01.660 に答える
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
于 2013-07-27T21:21:18.353 に答える
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ませんが、害はありません。

于 2013-07-27T22:58:00.527 に答える