【VBA】スタックを実装する

VBA

以前VBAでキューを実装しました。

【VBA】キューを実装する
VBAにデータ構造のキューがないので クラスモジュールを使用してキューを実装してみます。

 

VBAにはスタックがないので、実装してみます。

スタック

スタックの概要

スタックは最後に入れたデータが最初に取り出される
LIFO(Last In First Out)といわれるデータ構造になります。

スタックにデータを入れることをPush
スタックからデータを取り出すことをPopといいます。

 

スタックの実装

クラスモジュールを使用して、スタックを実装します。
下記の機能を実装してみます。

  • 動的配列を利用して、スタックを実装する
  • スタックにデータを入れるpushメソッドを実装する
  • スタックからデータを取り出すpopメソッドを実装する
  • スタック内のデータ数を取得するcountメソッドを実装する
  • スタックの内容をVariant型の配列として返すgetContentsメソッドを実装する
  • スタックにデータが無い時にpopを実行するとエラーをraiseする
    エラーの番号は1001とする

スタックのクラスモジュールは以下になります。

 

スタッククラスのテスト

スタッククラスをテストするコードは以下になります。

 

1→collection(value=”valueテスト”,key=”keyテスト”)→”a”の順で
スタックにデータを3個追加します。

 

Stackクラスのcountを実行します。
現在のスタックの個数を表示します。
先程データを3つ追加したので3個と表示されます。

 

 

getContentsを利用して、スタックの内容を配列に格納しています。

 

スタックからデータを取り出しています。
最後に追加したものから順々に取り出していきます。
“a”→collection(value=”valueテスト”,key=”keyテスト”)→1

collection型はMsgboxで直接表示できないので
一旦変数に代入し、キーを指定して値を表示しています。

 

スタックに値がない状態でpopを実行するとエラーになります。
エラー番号は1001になります。

コメント