初心者のためのExcel エクセルマクロVBA入門-ユーザー定義型変数
ちょこっとでも更新しようかと・・・思います。。。汗
ユーザー定義型変数です。
( ゚д゚)モウヤメテ・・・
そうですね。やめておきます。というのも、おそらく初心者の方には必要のないものかもしれないからです。ですが、必ず必要になる時も来ると思いますので、こんなもんなのだなぁくらいに思ってみていただければよいと思います。
いくつかの変数をまとめたものがユーザー定義型
ユーザー定義型はいくつかの変数をまとめて扱うことができます。通常、1つの変数には1つのデータしか入れることができませんが、ユーザー定義型を使うといくつかのデータをまとめて扱うことができます。どういうことかというと・・・
Type Personal strName As String lngAge As Long strAddress As String blnSex As Boolean strPostNum As String End Type
このようにTypeを使って、その後に自分が考えた変数の型の名前を書きます。ここではPersonalという新しい型を私が「作った」ということになります。扱いはStringとかLongとかと同じになるのです。ユーザーが自分で変数の型を作ることができる。これがユーザー定義型です。中には普通の変数の型が色々と並んでいますよね。これらを一度に扱えるのが今回新しく作ったPersonalという型になります。
当然、今は型を作っただけですので、このままでは使うことはできません。変数は必ず宣言するのでしたね。そして、使う時は変数の後に「.」を付けてその後に入れる変数を書きます。
Type Personal strName As String lngAge As Long strAddress As String blnSex As Boolean strPostNum As String End Type Public Sub Test() Dim pslInfo As Personal pslInfo.strName = ・・・・ End Sub
というように、Dimステートメントで新しい型Personalの変数を作ってあげます。後はその中にあるstrNameやlngAgeなんかに値を入れたりすることができるのです。
ユーザー定義型の配列もできる
当然ただの型ですので配列として作ることもできます。
Public Sub Test() Dim pslInfo(5) As Personal pslInfo(0).strName = ・・・・ pslInfo(1).strName = ・・・・ End Sub
という感じですね。ちょっとわかってきたでしょうか?これは個人情報の配列になっています。1人1人の情報をこのようにまとめて管理した方が扱いやすいですよね。いちいち名前の配列、住所の配列。。。と別々に作るより非常に簡単です。ユーザー定義型こんな風に使います。
ユーザー定義型にユーザー定義型を入れる
ちょっと複雑ですが、こんなこともできます。前回の成績表マクロでもちょっとやったかな?
Type Score Kamoku As String Tensu As Long End Type Type Personal strName As String lngAge As Long strAddress As String blnSex As Boolean strPostNum As String scrPsnlScore(4) As Score End Type Public Sub Test() Dim pslInfo(5) As Personal pslInfo(0).strName = ・・・・ pslInfo(1).strName = ・・・・ pslInfo(0).scrPsnScore(0).Kamoku = "国語" pslInfo(0).scrPsnScore(0).Tensu = 98 End Sub
今やったことを全部盛り込むとこんな感じになります。少し複雑ですが、成績というユーザー定義がScoreでそのScore型の変数をPersonalが持っている。という形ですね。まぁこの辺は、分からなくても大丈夫です。ちょっと複雑ですし、そもそもにこのユーザー定義型を使わなくても、マクロは作れます。
なるほど、こんなのがあるのだなぁくらいで大丈夫です。変数のお話はこれで終わりです。
大体話をしましたが、大切なのは、
・変数というものについて
・配列について
・配列の配列と多次元配列について
この3つくらい押さえておけば完璧です!わからんところは聞いてくれ!
次回はいよいよ、関数について!エクセルの関数と何が違うの?いや一緒!?なんてことをちょっと根幹から話そうと思います。
今日はここまで!
かしこ