VBAでの2次元配列の初期値定義

VB6,VBA,VBS,EXCEL,DOS,BAT,WSH,WORDの小技メモ

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ 燈明日記/ Perlノート/ 漢字起源/ yahoo

はじめに

本ページは、ウインドウズ系全般のティプスメモです。

そう、はじめはVB系のティプスメモだったのですが…いつの間にか、ウインドウズ系全般のティプスメモになってしまいました。

ちなみに、ティプス(Tips)とは、マニュアルに書かれていない技法や裏わざのことですが、本ページでは、私が経験してこれはと思ったノウハウのメモになっています。

尚、以下は本サイトの最新情報(ブログ)です。

それでは、本ページが何かのお役に立てれば幸いです。ごゆっくりご覧ください。

2008-10-21 VBAでの2次元配列の初期値定義

VBAはVB6ベースなので、VB.NET系のように宣言と初期値設定が一緒にできません。

なので、普通の2次元配列もジャクの2次元配列も宣言した後に代入文で初期値を代入します。

以下のVBAサンプルは、2次元配列のデータをEXCELのセルへ代入しています。

Sub aaa()
Dim data(2, 3) As Variant '普通の2次元配列宣言
Dim data2() As Variant    'ジャグ配列にするための宣言

data2 = Array(Array(0, 10, 20, 30), _
              Array(1, 11, 21, 31), _
              Array(2, 12, 22, 32))
data(0, 0) = 0
data(0, 1) = 10
data(0, 2) = 20
data(0, 3) = 30
data(1, 0) = 1
data(1, 1) = 11
data(1, 2) = 21
data(1, 3) = 31
data(2, 0) = 2
data(2, 1) = 12
data(2, 2) = 22
data(2, 3) = 32

Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "シートx"
Worksheets("Sheet1").Delete
Worksheets("Sheet2").Delete
Worksheets("Sheet3").Delete
Worksheets("シートx").Range(Cells(1, 1), Cells(3, 4)).Value = data
ActiveWorkbook.SaveAs Filename:="C:\xxx.xls"
End Sub

ちなみに、EXCELのセルに代入する場合は、ジャグ配列はNGで、普通の2次元配列でないとダメですね!

おわりに

以下のページには、すべてのTIPSがあります。もしよろしければ、どうぞ!

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくVB-TIPS掲示板へご指摘ください。

人のよいところをどんどん見つけよう