Square Beat Engine

Blog for variety of things…

MS-Office

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

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

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

ユーザー定義型の構文

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

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

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

関連記事

[VBA] 数値からRGBを求める関数

VBAでは、RGB関数を実行して数値を求めることは可能だが、数値からRGBの各値を得る関数は存在しない。 プロパティから色を取得すると数値で表現されるため、数値からRGB値を求める関数を作成してみた。 …

[Excel][VBA] オブジェクト名のワナ

Excel 2010のVBAで、ActiveXコントロール(VBA内ではOLEObject)の名前に罠があることに気づいたのでメモ。 「OLEObjectがうまく動作しない!」と嘆く誰かを1人でも救い …

[Excel][PPT][VBA] エクセルとパワーポイントの改行コードの違い

VBAで、エクセルからパワーポイントに改行を含む文字列をコピーしようとしたとき、若干つまずいたのでメモ! この記事で解決できる課題 パワーポイントの箇条書きでは、Enterで次の段落に移動し、新しい箇 …

[Excel][VBA] ワークブック・ワークシートを明確に指定

前々回・前回に引き続き、セルに文字列を記入するときのコードについて考えてみます。 今回は、ワークブック・ワークシートを明確に指定する必要性を検討します。 なぜ指定するのか セルの操作をする際、ワークシ …

[PowerPoint VBA] PowerPoint.Shapes.Chart エラー発生

パワーポイント2007のVBAで、予想外のエラーに遭遇し、解決できたのでメモ。 いきなり結論 パワーポイント2007は、インストール直後はPowerPoint.Shapes.Chartを実装していない …