VBAのユーザー定義型変数とは?使いどころも徹底解説!


VBAのユーザー定義型変数の意味や使い方がわからない・・・
ユーザー定義型変数を使いこなすと、どんなことができるのだろう?

VBAで基礎的な変数を使った処理が作れるようになったあとに学ぶのが、ユーザー定義型変数です。使い方を見て使ってみたものの、いまいち使いどころがよくわからず悩んでいる人もいるのではないでしょうか。

こんにちは!フリーランスエンジニア兼テックライターのワキザカです。

この記事では、VBAのユーザー定義型変数の概要・使い方・使いどころについて徹底的に解説します!

VBAで値を扱う時の重要な考え方についても最後に解説しているので、ぜひ最後まで見てくださいね!

この記事はこんな人のために書きました。

  • VBAのユーザー定義型変数の使い方・使いどころを知りたい人
  • VBAで値を扱う時のコツについて詳しく知りたい人

VBAのユーザー定義型変数とは?

はじめに、ユーザー定義型変数について簡単に解説します。

ユーザー定義型変数とは、複数の型・値を1つの変数名で管理する事が出来る型のことです。

複数の値をセットで扱うことができる方法に配列がありますよね。配列は同じ型の値しか扱うことができませんが、ユーザー定義型変数は、数値型、文字列型など複数の型を一度に扱うことができるのでとても便利なのです。

使い方は、次のとおりです。

ユーザー定義型変数の使い方:

「Type ユーザー定義型変数名」の中で複数の型を指定することができるため、Testプロシージャの中で「変数1.要素〇」のように「ユーザー定義型変数.〇〇」のように値を扱うことができます。

このように、複数の型をまとめて扱いたいときは、ユーザー定義型変数がとても便利です。

ちなみに、ユーザー定義型変数のことを「構造体」と言ったりもします。構造体については以下で詳しく解説しているので、興味がある方はぜひ見てみてくださいね!

【VBA入門】構造体の使い方(宣言、初期化、引数、コピー、定数)
更新日 : 2019年4月6日

VBAでユーザー定義型変数を使いこなす方法とは?

ユーザー定義型変数の解説だけ見ても、いまいち使いどころがよくわからない・・・という方も多いですよね。

そのため、次にVBAでユーザー定義型変数を使いこなす方法について解説します。

複数の型の値を1つにまとめて扱いたいとき

1つ目は、複数の型の値を1つにまとめて扱いたいときです。

サンプルをもとに解説しますね。

サンプルコード:

実行結果:

person1というユーザー定義型変数を配列として宣言し、person1(1)、person1(2)にそれぞれNo、Name、Sex、Tel、Addressの値をセットしています。Noは数値ですが、Nameは文字列なので配列では表現できないですよね。

このように、複数の型を含んで使う時はとても便利です。仮にユーザー定義型変数を使わなかった場合は、次のようになってしまいます。

サンプルコード:

変数宣言、値のセット、値の出力全て個々の変数を扱う必要があるので、コードが無駄に長いですよね。また、ユーザーが増えるごとに変数を追加していく必要があるため、保守性も悪いです。

そのため、1つのグループとして複数の型の値をまとめたいときは、ユーザー定義型変数がおすすめなのです。

戻り値にまとめて値を返したいとき

2つ目は、戻り値にまとめて値を返したいときです。

サンプルをもとに解説しますね。

サンプルコード:

まず、ユーザー定義型変数SumResultの中で、計算結果を入れるためのCalcResultと、関数のエラーメッセージを返すためのErrMsgを定義しています。Mainプロシージャの処理の中で、CalcSum関数を呼び出して、CalcSumの中でエラーが起こった時だけユーザー定義型変数のErrMsgに「エラー」を入れて返すよう処理を組んでいます。

このように、「計算結果」 + 「エラーメッセージなど文字列」を返すことができるので、「エラー処理は入れたいけど、計算結果も返すような関数作りたい・・・」というときにとても便利です!

慣れるまでは大変かもしれませんが、ぜひ使ってみてくださいね!

VBAで値を扱うときに重要な考え方

ここまでユーザー定義型変数の使い方について解説してきました。

ただ、やみくもにユーザー定義型変数を使えばいいかというと、そうでもありません。たとえば、数値型で複数の値を扱うときは、次のように列挙型変数Enumを使って書く方がわかりやすいです。

サンプルコード:

セルのデータ:

セルのデータ

実行結果:

Enumで使う必要があるのか?と思う方もいるかもしれませんが、Enumを使う場合は、メインの処理で変数宣言する必要がありません。列挙型変数Enumに直接値が入るため、宣言する分のコードが減るのです。

また、同じ型で複数の値を使う時は、配列で表現することもできます。そのため、配列、Enum、ユーザー定義型変数を以下のように使い分けることがおすすめです!

  • 同じ型のみで複数の値:配列
  • 数値の型のみで複数の値:Enum
  • 複数の型で複数の値:ユーザー定義型変数

慣れないうちは大変かもしれませんが、無駄なコードをなくして綺麗なコードが書けるようになると、コードを書く速度も圧倒的に上がります。メンテナンス性も高まるので、ぜひ使いどころを見極めて使ってみてくださいね!

ちなみに、配列やEnumについては以下で詳しく解説しています。あまり使ったことがない方は、以下を見てみてくださいね!

【VBA入門】配列総まとめ(初期化、ループ操作、コピー、結合、比較)
更新日 : 2019年4月18日
【ExcelVBA入門】列挙型変数Enumとは?おすすめの使い方も徹底解説!
更新日 : 2019年7月19日

まとめ

今回は、VBAのユーザー定義型変数の使い方・使いどころについて解説しました。

最後にお伝えしたように、やみくもに使うのではなく使いどころを見極めて使っていくことがおすすめです。

メンテナンス性の高い綺麗なコードを書く力を、ぜひ身に着けてくださいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説