excel vba stack filo
'VBA does not include a native STACK (LIFO: LAST-In-FIRST-Out) memory
'structure. It is possible to implement one using nothing but a native
'array or collection.
'However, the easiest solution is to have VBA create and use a .NET Stack:
Set stack = CreateObject("System.Collections.Stack")
Stack.Push "I"
Stack.Push "was"
Stack.Push "here."
MsgBox Stack.Pop '<--displays: here.
'Note: Pop() removes the top (last-added) item from the Stack.
' Peek() will return the top value without removing it:
MsgBox Stack.Peek '<--displays: was
'Stack interrogation:
MsgBox Stack.Count '<--displays: 2. Count() returns 0 if Stack empty.
MsgBox Stack.Contains("I") '<--displays: True
'Stack to 1D VBA array (zero based):
arr = Stack.toArray
MsgBox arr(0) '<--displays: I Stack is unaltered.
'Clone the Stack:
Set Stack2 = Stack.Clone '<--Stack2 is not affected by ops on Stack.
'Empty the Stack:
Stack.Clear '<--Stack now empty, but can take a new Push().
'NB: Stacks can hold simple values and also complex objects.
'Reference:
' https://docs.microsoft.com/en-us/dotnet/api/system.collections.stack
'FILO and LIFO are interchangeable and mean the same thing.