Square Beat Engine

Blog for variety of things…

MS-Office

[VBA] ユーザー定義型の使い方

投稿日:2015-01-23 更新日:

VBAでは、自分で型を定義することができる。
異なる値をひとまとめに扱いたいときに使うと、取り扱いがぐっと楽になる。

ユーザー定義型の構文

宣言部分(モジュール内の冒頭、Optional Explicitのすぐ後)に、以下のように宣言する。

VarNameおよびElementNameには、任意の文字を設定できる。
Typeは変数の型を指定する。IntegerやStringなど。

ユーザー定義型の用途

いくつかの値をひとまとまりにして扱いたいときに便利だ。
多元配列で管理可能な場合でも、要素(Element)に名前をつけられるのは管理しやすくなるメリットがある。
また配列では1つの方しか扱えないが、ユーザー定義型では要素ごとに型を指定できる。

例:RPGの敵モンスター

カジュアルでわかりやすい例として、RPGのキャラクターが挙げられているのを見る。
今回は、敵モンスターを例にしてみた。

モンスターマスタ

あらかじめ、以下のようなモンスターマスタを作成しておき、セル範囲に「MonsterMaster」という名前を定義しておく。
(このリストはフィクションであり、実在のモンスターとは一切関係ありません)

種族 HP 攻撃力 防御力
スライム 6 1 1
おおがらす 7 2 1
いっかくうさぎ 10 4 3
おおありくい 12 4 5

 コード

 結果

スライムが現れた!(HP: 6)
スライムが現れた!(HP: 6)
おおがらすが現れた!(HP: 7)

実例:パワーポイントの操作

自分が仕事で書いたコードを元に、例を記載する。
下記の例では、関数に同じ引数を何度も引き渡すのを避けるために、1つの変数を使い回している。

いろいろと省略してはいるが、ユーザー定義型を用いることで同じ引数を何度も渡さずに済んでいる。
共通部分は1度セットすれば、以降は変更する必要がない。
一方、処理ごとに引き渡したい値が違うものは、サブプロシージャの呼び出し前に値をセットし、冗長になるのを防いでいる。

Typeのメリットは、要素名を任意に設定できることで、多元配列や引数による引き渡しに比べ、可読性が向上することだと思う。
ベストなプログラミングというものは存在しないが、パフォーマンスと可読性の両方を最大化できるよう、引き続き新たな発見をしていきたい。

以上!

-MS-Office

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

[PowerPoint][VBA] スライドの追加

パワーポイントのスライドを作成する方法。 メソッド 単にスライドを挿入する場合は、PPT.Slides.Addでよい。 今回はテンプレートファイルからスライドをコピーする形を取ったため、いくつか工夫が …

[PowerPoint][VBA] テーブルの各行の高さを揃える

パワーポイントのテーブルには、「高さを揃える」という機能があるが、VBAにはそれに該当するメソッドが存在しない。 そこで、以下のプロシージャを自作した。 コード [crayon-5cb9a7942fc …

[Excel][VBA] クリップボードを経由しないコピーを勧める理由

自分の作ったエクセルマクロには、クリップボード経由のコピーは皆無だ。 その理由はいたってシンプルだ。 クリップボードを使わない理由 自分がマクロでクリップボードを使わない理由はたった1つ。 「ほかの作 …

[Excel][VBA] 選択中のセルにハイパーリンクをセット

URLが入力されたセルがいくつもあるとき、それぞれのセルにハイパーリンクを設定するマクロを紹介する。 コード

参考: 手動でのハイパー …

[Excel][VBA] シートを新規ワークブックにコピーする方法

既存のシートからワークシートを新規シートにコピーする。 手動の場合は、新規ワークブックを選択するだけでよい。 VBAでは以下のメソッドを用いる。 コード例 [crayon-5cb9a794305dd7 …