VBA遍历链接列表导致运行时错误91

时间:2016-06-03 17:24:50

标签: vba excel-vba excel

链接列表节点CMLNode。

Option Explicit

Public key As Integer
Public pnext As CMLNode

将值添加到列表的功能。

Option Explicit
Dim head As New CMLNode

Public Function Add()
    Dim curr As CMLNode
    Dim i As Integer


    Set curr = head
    For i = 1 To 5
        Set curr.pnext = New CMLNode
        Set curr = curr.pnext
        curr.key = i
    Next i

    Set curr = head
    While Not curr.pnext Is curr
        Set curr = curr.pnext
    Wend
End Function

我试图在VBA中实现链接列表。我的问题是,每当我进入while循环的第6次迭代时(当它应该中断时),我得到一个运行时错误' 91' - 未设置对象变量或块变量。

这个功能显然是多余的,只是我问题的简单演示。

1 个答案:

答案 0 :(得分:0)

修正了它!

我一直在从java的角度考虑它,当你指向Null时,你已经到达了列表的末尾。 Microsoft用作演示的代码使最后一个节点指向自身以表示列表的结尾。

Public Function Add(key As Integer)
    Dim curr, prev As CMLNode
    Dim i As Integer


    Set curr = head
    For i = 1 To 5
        Set curr.pnext = New CMLNode
        Set curr = curr.pnext
        curr.key = i
    Next i
    Set curr.pnext = curr 'signify end of list

    Set curr = head
    While Not curr.pnext Is curr
        Set curr = curr.pnext
    Wend
End Function