ノンプロ研中級プログラミング講座【VBAコース第2期】第5回
- ntakahashi0505
- 1362
- 3
- 0
- 19
固定配列のサイズ設定は定数じゃないとエラーが出るが、動的配列のReDimでのサイズ設定は変数でもOK 例えば、 Dim i As Long: i = 2 Dim numbers(1 To i) As Long ←これはエラー Dim i As Long: i = 2 Dim numbers() As Long ReDim numbers(1 To i) As Long ←これはOK #ノンプロ研
2021-03-19 20:38:10動的配列のサイズ変更 ※あくまで指針です ○サイズの変更が必要 →コレクション・辞書 ○サイズの変更が不要 ・事前にサイズがわかる →固定配列 ・事前にサイズがわからない →動的配列 #ノンプロ研 #VBA中級講座
2021-03-19 20:39:40動的配列じゃなくてコレクション・辞書を使うケースもあるので、どっちが楽かで使い分けてよい こういうどっちでもいいってのががVBAっぽい #ノンプロ研
2021-03-19 20:40:22○Variant型の変数 Dim 変数 As Variant どんな値も格納できる万能の変数 ・変数の型について wa3.i-3-i.info/word11026.html #ノンプロ研 #VBA中級講座
2021-03-19 20:40:47どんな値も格納できる万能の変数 🧚Variant🧚♀️ Dim 変数 as Variant ・日付、整数、配列、オブジェクト、なんでも入る ・動的配列になる ・格納する値の型がバラバラでもOK ・インデックス指定で初期化できない #ノンプロ研
2021-03-19 20:42:16Variant型での配列 ・動的配列になる ・格納する値の型が何でもOK ・ただしインデックス指定で初期化できない #ノンプロ研
2021-03-19 20:42:39#ノンプロ研 #VBA Variant型の変数による配列 ・格納する値がバラバラでもOK ・値をいれるにはArray関数を使う
2021-03-19 20:43:13初期化できないを解決するためには Array関数を使用する ○Array関数 配列を生成する Array(値1, 値2, ...) Dim numbers As Variant numbers = Array(10, 30, 20) ・戻り値はVariant型 ・下限値はOption Baseステートメントに従う *デフォルトは「0」 #ノンプロ研 #VBA中級講座
2021-03-19 20:43:55Dim numbers As Long numbers = Array(10, 20, 30) Variant型配列への代入方法の1つとしてArray関数を使う方法がある #ノンプロ研
2021-03-19 20:44:23そういえばBobの年齢は25歳で固定なので、生まれた年が本とか講座によって違うような気がする サザエさんみたいに何年経っても年取らないやつか #ノンプロ研
2021-03-19 20:48:46ワークシートを配列に入れることを考えると、型が揃っていることはあまりないので、Variant変数を使うことが多いとのこと #ノンプロ研
2021-03-19 20:50:08配列を使う際の方針チャート ○サイズの変更が必要 →コレクション・辞書 ○サイズの変更が不要 ●事前にサイズがわかる →固定配列 ●事前にサイズがわからない ・型が揃っている →固有型の動的配列 ・型が揃ってない →Variant変数による配列 #ノンプロ研 #VBA中級講座
2021-03-19 20:50:46配列を使う際の方針チャート…助かる!ノンプロ研の講座では実際の場面だとこうするかなみたいな参考情報も くれるのとってもありがたいです😃 #ノンプロ研
2021-03-19 20:52:07VBAの配列はインデックスの下限が固定じゃないので、配列のサイズを取る時はlengthとかlenじゃなくて、UBound/LBound関数で下限上限を両方取る必要がある #ノンプロ研
2021-03-19 20:52:49○LBound関数・UBound関数 配列のインデックスの下限値・上限値を返す LBound(配列[, 次元]) UBound(配列[, 次元]) Debug.Print LBound(numbers) '1 Debug.Print UBound(numbers) '3 #ノンプロ研 #VBA中級講座 pic.twitter.com/SypOiJLRJ8
2021-03-19 20:53:14配列化する方法によってはOptionBaseで最小インデックスをコントロールできない。 なのでコントロールが必要なら、OptionBaseに頼らずに宣言時に最小インデックスを明示するのが吉 #ノンプロ研 #エア中級
2021-03-19 20:53:22以下はエラーとなる Dim A as Variant A(1) = "hoge" この時点の変数valuesの状態はEmpty 配列としての箱が出来てないのでエラーとなる 箱が出来てからならエラーにならない Dim A as Variant A = Array("hoge", "fuga") A(1) = "piyo" #ノンプロ研
2021-03-19 20:53:57