素人がExcelVBAによる「一人働き方改革」に挑むブログスマートフォン用の表示で見る素人がExcelVBAによる「一人働き方改革」に挑むブログExcelVBAネタです。2018-12-05整数以外の列挙体っぽい定数を実現するVBAクラス・モジュール整数型以外の列挙体ぽいものを実現する題名が分かりにくくてすまない。Handbookにハマっている。その中で面白そうなアイディアを発見したので、ちょっと実験してみた。Handbook』が手元にないため、概略だけ記すと、〈クラスモジュールを使ってオリジナルの組み込み定数的なものを作る〉といったもの。(このあたり、記憶があやふやなので、後で修正するかも知れません。そのときは、本文からの引用も交えて書き改めたいと思います。)通常、組み込み定数といえば、列挙体として定義されているように思う。自作の列挙体ということになれば、Enumを使えば良いのだけれど、要素名の重複の問題もあって、イマイチ使いづらいなあと思っていた。基本的に整数をテキトーな名前で表現できる、というだけなので(当り前)、文字列なんかをグループにして扱いたいときには、けっこう面倒だった。Enumのかわりにクラスモジュールを使うそこで、クラスモジュール。「XlLineStyle列挙体」だったら、「XlLineStyle」の部分をクラスモジュールにする。「XlLineStyle.xlContinuous」の「xlContinuous」の部分、すなわち要素名の部分をPropertyにすれば、整数だけでなく、いろいろなものを定数的に使えるのだ。サンプルクラスクラスモジュールを挿入し、次のようなアホみたいなクラスを作ってみる。クラスモジュール'オブジェクト名は「Waruguchi」です。Stringはデータ(笑)を入れておくためのPrivate配列変数の宣言。別に、個別の変数にしても良い。PropertyはPropertyの設定。引数を受け取ってPrivate配列変数の要素を返すようにしている。めんどくさいので、特にエラー対応はしていない。インスタンス化された時点でPrivate配列変数Waruguchies_()にデータ(笑)が入っていないといけないので、Class_Initializeでデータ(笑)をぶち込むようにした。VB_PredeclaredIdの右辺をTrueにしておく。これで、インスタンス化の手順を踏まずに、「Waruguchi」とクラス名を書けばオブジェクトとして利用できる。下ごしらえが済んだら、次のコードで実験。Subもはや説明する必要はあるまい。WaruguchiオブジェクトのWaruguchiプロパティの引数に0~4を渡して、順に文字列を表示するだけのコード。こいつを実行すると、この通り。おわりに今回はめんどくさいので配列にしたけれど、気の利いたProperty名を個々に設定することで、複数の文字列をはじめとする整数以外のデータをひとまとめにして定数のように扱えると思う。»プロフィールid:akashi_keirinExcelVBAネタです。SyntaxHighlighter.all();注目記事はてなブログをはじめよう!akashi_keirinさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。