Attribute VB_Name = "mVectors" Option Explicit ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Módulo responsável por tratar corretamente vetores ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Retorna a última posição de um vetor (0 para quando não houver posições) ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Function VtSize(vtInput) As Long On Error GoTo ErrTreat: ' Retorna tamanho do vetor VtSize = UBound(vtInput) VtSize = VtSize + 1 Exit Function ErrTreat: ' Retorna 0 VtSize = 0 End Function ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Limpa o conteúdo de um vetor e o libera ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Sub CleanVt(vtInput) On Error Resume Next Dim lnPos As Long ' Percorre o vetor For lnPos = (VtSize(vtInput) - 1) To 0 Step -1 ' Libera vtInput(lnPos) = vbNull Next lnPos ' Libera vetor Erase vtInput End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Adiciona um item ao final do vetor ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Sub VtAdd(vtInput, Item) Dim lnPos As Long ' Seta a posição do item lnPos = VtSize(vtInput) ' Redimenciona o vetor ReDim Preserve vtInput(lnPos) ' Adiciona item vtInput(lnPos) = Item End Sub Public Sub VtAddObj(vtInput, Item) Dim lnPos As Long ' Seta a posição do item lnPos = VtSize(vtInput) ' Redimenciona o vetor ReDim Preserve vtInput(lnPos) ' Adiciona item Set vtInput(lnPos) = Item End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Retorna o topo da pilha (vetor) ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Function ReturnCell(vtInput, invalidValue) As Variant Dim lnSize As Long ' Conta quantos itens há lnSize = VtSize(vtInput) ' Verifica se há itens If (lnSize > 0) Then ' Retorna o item do topo ReturnCell = vtInput(lnSize - 1) ' Verifica se há apenas um item If (lnSize = 1) Then ' Libera vetor Erase vtInput ' Tem mais de um item Else ' Retira o item topo do vetor ReDim Preserve vtInput(lnSize - 2) End If Else ' Retorna valor inválido ReturnCell = invalidValue End If End Function