vba stack lifo code example

Example: 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.

Tags:

Vb Example