• ベストアンサー

vba Typeステートメント

vbaでTypeステートメントはどういう時に使えばいいのでしょうか? 今までTypeを使わずに問題なくコードを作ってきたのですが Typeを使いどころがわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

Typeステートメントは、ユーザー定義型変数を宣言する際に使います。 これが無くてもプログラムを組む上で何ら不都合はありませんが、知っておくと、より効率良く、洗練されたコードを書くのに役立ちます。 ある情報を扱うにあたって、その情報に関する属性がたくさんある時に、それらをひとつひとつ別の変数に格納していては、手間が掛かり、効率も悪いですよね。 そこで、大きな分類でひとくくりにして、複数の属性をまとめて面倒みてしまおうというのが、ユーザー定義型変数です。C言語では構造体とも呼ばれます。 例えば、ゲームプログラムでは、敵キャラの属性に関するデータがたくさん必要になる場合があります。名前やレベルやX座標やY座標…といった具合に。これらを、 EnCharaName EnCharaLv EnCharaX EnCharaY などの変数で個々に管理しても別に問題は無いのですが、より効率良いコーディングを考えるならば、EnCharaでひとくくりにしてしまい、一括管理するほうがスマートです。 Type Prm '宣言 Name As String Lv As Long X As Long Y As Long End Type '宣言の締め 'サブプロシージャ Dim EnChara(n) As Prm With EnChara(n) .Name = xxx .Lv = 1 .X =10 .Y =15 End With という感じにすれば、EnCharaに関する色々な属性を、Withでひとまとめに処理する事が出来、見通しの良いプログラムにすることができます。 小規模で、変数も少ないコードでは、あまり利用価値を実感出来ませんが、内容が大きく複雑になるにつれ、構造体の出番は増えると思います。

scoaxsnc
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

簡単に言えば、ひとまとめにしたい複数の値があるときに、それらをひとまとめにするのに使います。 たとえば、学生の成績を各学生ごとに集計するとき、成績を表す型があったら各教科の成績をばらばらに持つよりも楽だと思いませんか? たとえば、何らかの座標を扱う場合、その座標を表す型があったら x 座標の値と y 座標の値を別にもつより楽だとは思いませんか? そして、あなたがコードを書いているときに、ある複数の値が常に一緒に行動しているという経験はありませんか? そのような、「常に一緒に行動する複数の値(でも不注意で別の値とグループを組んじゃいそう)」を「内部に複数の値を持つ一つの値」にまとめ上げるのが Type ステートメントです。 確かに全体で数行、数十行の VBA コードでは少々ありがたみが薄いかもしれません。しかし、全体で数百、数千行になってくるとこれがあると非常にありがたい構文です。

scoaxsnc
質問者

お礼

ありがとうございました。

関連するQ&A