t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

Webで動くVBAチュートリアルを作りたい その7

そろそろ評価した値をくっつけたいが、書籍によると、スタックが必要らしい。

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が表示される。

 

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。