配列についていろいろメモしときます。
Optin Baseのように使わない情報はすっとばしますよっと。
配列といえば複数の値を格納できる変数ですね。
宣言の仕方や、要素の入力方法に違いがあるので選ぶ基準からメモっていきます。
頭の中で考えてく流れを現してみました。
◆配列作成の流れ
┳要素数が確定している
┃ ┃
┃ ┣(1)要素数が少ない
┃ ┃ ・要素数 :宣言時に要素数を指定
┃ ┃ ・型の指定:任意の型を指定
┃ ┃ ・代入方法:要素別に一つ一つ代入する
┃ ┃
┃ ┗(2)要素数が多い
┃ ・要素数 :宣言時に要素数を指定しない
┃ ・型の指定:Variant型のみ
┃ ・代入方法:Array関数を使ってまとめて代入
┃
┗要素数が不確定
┃
┣初期に何か入力することがある
┃ ┃
┃ ┣(3)入力要素数が少ない
┃ ┃ ・要素数 :宣言時に要素数を指定しない
┃ ┃ ・型の指定:Variant型のみ
┃ ┃ ・初期代入:要素別に一つ一つ代入する
┃ ┃
┃ ┗(4)入力要素数が多い
┃ ・要素数 :宣言時に要素数を指定しない
┃ ・型の指定:任意の型を指定
┃ ・初期代入:Array関数を使ってまとめて代入
┃
┗(5)初期に何か入力することがない
・要素数 :宣言時に要素数を指定しない
・型の指定:任意の型を指定
・代入方法:要素別に一つ一つ代入する
まずは、サンプルコードから。
◆注意点のまとめ。
・配列の最初の要素は0から始まる
・Dim or ReDimで要素数を指定する場合最後の要素番号を書く
・Array関数を使う時は、Variantのみ
・ReDimだけだと既に入力した値は消えるのでPreserveも指定することで
既に入力してある値を引き継いでつかう。
・UBoundで一番最後の要素番号を調べれる。
ただし、要素数の宣言をしていない配列を引数に渡すとエラーとなる。
・Splite関数の値を受け取る場合、変数の要素数を指定しておくとエラーとなる。
◆配列の初期化
静的宣言の場合…Dimで要素数を宣言している場合、各要素が各要素がクリアされる。
動的宣言の場合…Dimで要素数を宣言していない場合、要素数自体クリアされる。
Optin Baseのように使わない情報はすっとばしますよっと。
配列といえば複数の値を格納できる変数ですね。
宣言の仕方や、要素の入力方法に違いがあるので選ぶ基準からメモっていきます。
頭の中で考えてく流れを現してみました。
◆配列作成の流れ
┳要素数が確定している
┃ ┃
┃ ┣(1)要素数が少ない
┃ ┃ ・要素数 :宣言時に要素数を指定
┃ ┃ ・型の指定:任意の型を指定
┃ ┃ ・代入方法:要素別に一つ一つ代入する
┃ ┃
┃ ┗(2)要素数が多い
┃ ・要素数 :宣言時に要素数を指定しない
┃ ・型の指定:Variant型のみ
┃ ・代入方法:Array関数を使ってまとめて代入
┃
┗要素数が不確定
┃
┣初期に何か入力することがある
┃ ┃
┃ ┣(3)入力要素数が少ない
┃ ┃ ・要素数 :宣言時に要素数を指定しない
┃ ┃ ・型の指定:Variant型のみ
┃ ┃ ・初期代入:要素別に一つ一つ代入する
┃ ┃
┃ ┗(4)入力要素数が多い
┃ ・要素数 :宣言時に要素数を指定しない
┃ ・型の指定:任意の型を指定
┃ ・初期代入:Array関数を使ってまとめて代入
┃
┗(5)初期に何か入力することがない
・要素数 :宣言時に要素数を指定しない
・型の指定:任意の型を指定
・代入方法:要素別に一つ一つ代入する
まずは、サンプルコードから。
- Option Explicit
- Sub Sample()
- '■要素数が確定している
- '(1)要素数が少ない
- ' ・要素数 :宣言時に要素数を指定
- ' ・型の指定:任意の型を指定
- ' ・代入方法:要素別に一つ一つ代入する
- '
- ' -ポイント-
- ' ⇒配列の最初の要素は0から始まる
- ' ⇒宣言時に指定する要素の値は、最後のインデックス番号。
- Dim test1(2) As String '3個の要素を用意
- test1(0) = "あああ"
- test1(1) = "いいい"
- test1(2) = "ううう"
- '内容確認
- Dim val As Variant
- For Each val In test1
- Debug.Print val
- Next
- '----------------------------------------------------------------
- '■要素数が確定している
- '(2)要素数が多い
- ' ・要素数 :宣言時に要素数を指定しない
- ' ・型の指定:Variant型のみ
- ' ・代入方法:Array関数を使ってまとめて代入
- '
- ' -ポイント-
- ' ⇒Array関数は、Variant型のみ
- Dim test2() As Variant
- test2 = Array("1月", "2月", "3月", "4月", "5月", "6月", _
- "7月", "8月", "9月", "10月", "11月", "12月")
- '内容確認
- For Each val In test2
- Debug.Print val
- Next
- '----------------------------------------------------------------
- '■要素数が不確定
- ' 初期に何か入力することがある
- '(3)入力要素数が少ない
- ' ・要素数 :宣言時に要素数を指定しない
- ' ・型の指定:Variant型のみ
- ' ・代入方法:要素別に一つ一つ代入する
- '
- ' -ポイント-
- ' ⇒ReDim 変数(最後の要素番号)で配列の要素数を変更
- ' ただし、既に代入している値はリセットされる
- ' ⇒ReDimと一緒にPreserveを使うと既に代入している値が引継がれます
- Dim test3() As Variant
- ReDim test3(2)
- test3(0) = "000"
- test3(1) = "111"
- test3(2) = "222"
- '追加代入
- Dim i As Integer
- For i = UBound(test3) + 1 To 9 'UBoundで一番最後の要素番号を調べる
- ReDim Preserve test3(i) 'Preserve…既に代入している値が引継がれます
- test3(i) = CStr(i & i & i)
- Next
- '内容確認
- For Each val In test3
- Debug.Print val
- Next
- '----------------------------------------------------------------
- '■要素数が不確定
- ' 初期に何か入力することがある
- '(4)入力要素数が多い
- ' ・要素数 :宣言時に要素数を指定しない
- ' ・型の指定:Variant型のみ
- ' ・代入方法:Array関数を使ってまとめて代入
- '
- ' -ポイント-
- ' ⇒Array関数は、Variant型のみ
- ' ⇒ReDim 変数(最後の要素番号)で配列の要素数を変更
- ' ただし、既に代入している値はリセットされる
- ' ⇒ReDimと一緒にPreserveを使うと既に代入している値が引継がれます
- Dim test4() As Variant
- test4 = Array("あいうえお", True, Date, Time) 'Variantなので複数の型を格納できる
- '追加代入
- For i = UBound(test4) + 1 To 9 'UBoundで一番最後の要素番号を調べる
- ReDim Preserve test4(i) 'Preserve…既に代入している値が引継がれます
- test4(i) = i ^ i
- Next
- '内容確認
- For Each val In test4
- Debug.Print val
- Next
- '----------------------------------------------------------------
- '■要素数が不確定
- '(5)初期に何か入力することがない
- ' ・要素数 :宣言時に要素数を指定しない
- ' ・型の指定:任意の型を指定
- ' ・代入方法:要素別に一つ一つ代入する
- '
- ' -ポイント-
- ' ⇒要素数を宣言する前にUBoundを使うとエラーになります
- 'Case1
- Dim test5() As String
- For i = 0 To 9
- ReDim Preserve test5(i)
- test5(i) = i ^ 3
- Next
- '内容確認
- For Each val In test5
- Debug.Print val
- Next
- 'Case2
- Dim test6() As String
- test6 = Split("あ,い,う,え,お", ",")
- '内容確認
- For Each val In test6
- Debug.Print val
- Next
- End Sub
◆注意点のまとめ。
・配列の最初の要素は0から始まる
・Dim or ReDimで要素数を指定する場合最後の要素番号を書く
・Array関数を使う時は、Variantのみ
・ReDimだけだと既に入力した値は消えるのでPreserveも指定することで
既に入力してある値を引き継いでつかう。
・UBoundで一番最後の要素番号を調べれる。
ただし、要素数の宣言をしていない配列を引数に渡すとエラーとなる。
・Splite関数の値を受け取る場合、変数の要素数を指定しておくとエラーとなる。
◆配列の初期化
- Erase 変数
動的宣言の場合…Dimで要素数を宣言していない場合、要素数自体クリアされる。
0 件のコメント:
コメントを投稿