集合vba中需要的对象

时间:2016-12-05 16:38:50

标签: vba excel-vba excel

在vba编程方面,我似乎有点生疏。我创建了一个许可证类型(类/对象),并希望将其添加到集合类型。我试图迭代集合,但继续得到对象所需的错误424.下面的代码片段提供建议。提前谢谢

Private Sub btnGenerate_Click()
    Dim lic As licence

    For Each lic In licenceCollection
        Debug.Print lic.getClause
    Next lic


End Sub
licenceCollection中每个lic产生的

错误

Private Sub cboHeading_Change()

    Dim heading As String
    Dim str As String
    'Dim lic As Licence

    Dim rngValue As Range
    Dim ws As Worksheet
    Dim last_row As Long
    Dim arr()
    Dim i As Long
    'Dim lic As licence





    heading = cboHeading.Value

    Set licenceCollection = New collection



    Select Case heading
        Case "Future Sampling"
            'str = "lorem ipsum"
            'Utility.createCheckBoxes (str)

            'grab data from Future Sampling ws
            Set ws = Worksheets("Future_Sampling")
            ws.Activate
            last_row = Range("A2").End(xlDown).Row
            Debug.Print last_row

            ReDim arr(last_row - 2)
            'add array to object type
            For i = 0 To last_row - 2
                arr(i) = Range("A" & i + 2)
                'Debug.Print arr(i)
            Next

            Set licence = New licence
            licence.setClause = arr
            'Debug.Print lic.getDescription

            'add licence to collection for later retrieval
            licenceCollection.Add (arr)

        Case Else
            Debug.Print ("no heading")
    End Select


    'Set lic = Nothing

End Sub


Private Sub UserForm_Initialize()
    Dim rngValue As Range
    Dim ws As Worksheet

    Set ws = Worksheets("Headings")

    For Each rngValue In ws.Range("A2:A10")
        Me.cboHeading.AddItem rngValue.Value
    Next rngValue

    'licenceForm.cboHeading.SetFocus
    'create vertical scrollbar
    With Me.resultFrame
        .ScrollBars = fmScrollBarsVertical
    End With
End Sub

1 个答案:

答案 0 :(得分:1)

谢谢你们,这解决了我的问题。

Private Sub btnGenerate_Click()
    Dim i As Long
    Dim lic As licence
    Dim temp As Variant

    For Each lic In licenceCollection
        temp = lic.getClause
    Next lic

    For i = LBound(temp) To UBound(temp) Step 1
        Debug.Print temp(i)
    Next
End Sub

Private Sub cboHeading_Change()

Dim heading As String
Dim str As String
'Dim lic As Licence

Dim rngValue As Range
Dim ws As Worksheet
Dim last_row As Long
Dim arr()
Dim i As Long
Dim lic As licence





heading = cboHeading.Value

Set licenceCollection = New collection



Select Case heading
    Case "Future Sampling"
        'str = "lorem ipsum "
        'Utility.createCheckBoxes (str)

        'grab data from Future Sampling ws
        Set ws = Worksheets("Future_Sampling")
        ws.Activate
        last_row = Range("A2").End(xlDown).Row
        Debug.Print last_row

        ReDim arr(last_row - 2)
        'add array to object type
        For i = 0 To last_row - 2
            arr(i) = Range("A" & i + 2)
            'Debug.Print arr(i)
        Next

        Set lic = New licence
        lic.setClause = arr
        'Debug.Print lic.getDescription

        'add licence to collection for later retrieval
        licenceCollection.Add lic


    Case Else
        Debug.Print ("no heading")
End Select


'Set lic = Nothing

End Sub