そろそろ評価した値をくっつけたいが、書籍によると、スタックが必要らしい。
VBAにそんなものは無いので、Stackクラスを実装することにした。
自己流ではあるが、とりあえず、PushとPop、CountとTopは出来る。
以下、クラスモジュール[Stack]に記載するコード
Private Items() As Variant Property Get Count() As Integer Count = UBound(Items) End Property Property Get Top() As Variant Top = Items(UBound(Items)) End Property Public Function Pop() As Variant If UBound(Items) > 0 Then Pop = Items(UBound(Items)) ReDim Preserve Items(UBound(Items) - 1) Else Pop = Empty End If End Function Public Sub Push(ByRef x As Variant) ReDim Preserve Items(UBound(Items) + 1) Items(UBound(Items)) = x End Sub Private Sub Class_Initialize() ReDim Items(0) End Sub
以下、クラスを使うテストコード。Workモジュールを作ってそこに書いた。
Sub test() Dim s As New Stack s.Push (1) s.Push (2) Debug.Print s.Pop + s.Pop End Sub
きちんと3が表示される。