Skip to content

Instantly share code, notes, and snippets.

@KotorinChunChun
Last active July 25, 2020 20:55
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KotorinChunChun/4ca29be3d69ef160bd5d044737658c9f to your computer and use it in GitHub Desktop.
Save KotorinChunChun/4ca29be3d69ef160bd5d044737658c9f to your computer and use it in GitHub Desktop.
20200725_配列の次元数に関係なく読み書きする関数
Rem --------------------------------------------------------------------------------
Rem
Rem @module kccFuncArrayPartial
Rem
Rem @description 配列操作関数
Rem
Rem @update 2020/07/26
Rem
Rem @author @KotorinChunChun (GitHub / Twitter)
Rem
Rem @license MIT (http://www.opensource.org/licenses/mit-license.php)
Rem
Rem @URL https://gist.github.com/KotorinChunChun/4ca29be3d69ef160bd5d044737658c9f
Rem
Rem --------------------------------------------------------------------------------
Option Explicit
Rem メモリブロックの内容を別のメモリブロックにコピーする
#If VBA7 Then
Private Type Pointer: Value As LongPtr: End Type
Private Declare PtrSafe Sub RtlMoveMemory Lib "Kernel32" (ByRef pDest As Any, ByRef pSrc As Any, ByVal Length As LongPtr)
#Else
Private Type Pointer: Value As Long: End Type
Private Declare Sub RtlMoveMemory Lib "Kernel32" (ByRef pDest As Any, ByRef pSrc As Any, ByVal Length As Long)
#End If
Private Type TtagVARIANT
vt As Integer
r1 As Integer
r2 As Integer
r3 As Integer
sa As Pointer
End Type
Rem --------------------------------------------------------------------------------
Rem Core共通
Rem 変数に値を代入
Rem
Rem @creator https://qiita.com/nukie_53/items/bde16afd9a6ca789949d
Rem
Rem @param outVariable 出力先変数
Rem @param inExpression 書き込み内容
Rem
Rem @example SetVar(out) = in
Rem
Public Property Let SetVar(outVariable As Variant, inExpression As Variant)
If VBA.IsObject(inExpression) Then
Set outVariable = inExpression
ElseIf VBA.VarType(inExpression) = vbDataObject Then
Set outVariable = inExpression
Else
Let outVariable = inExpression
End If
End Property
Rem 次元数不定の変数に値を代入
Rem
Rem @param outArr 出力先変数
Rem @param idxs() 出力先インデックス配列
Rem @param inExpression 書き込み内容
Rem
Rem @example SetArr(arr, i, j) = in
Rem
Rem @note
Rem 過剰に付与されたインデックスは無視される
Rem
Public Property Let SetArr(outArr, ParamArray idxs(), inExpression As Variant)
Select Case GetArrayDimension(outArr)
Case 0: SetVar(outArr) = inExpression
Case 1: SetVar(outArr(idxs(0))) = inExpression
Case 2: SetVar(outArr(idxs(0), idxs(1))) = inExpression
Case 3: SetVar(outArr(idxs(0), idxs(1), idxs(2))) = inExpression
Case 4: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3))) = inExpression
Case 5: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4))) = inExpression
Case 6: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5))) = inExpression
Case 7: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6))) = inExpression
Case 8: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7))) = inExpression
Case 9: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8))) = inExpression
Case 10: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9))) = inExpression
Case 11: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10))) = inExpression
Case 12: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11))) = inExpression
Case 13: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12))) = inExpression
Case 14: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13))) = inExpression
Case 15: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14))) = inExpression
Case 16: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15))) = inExpression
Case 17: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16))) = inExpression
Case 18: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17))) = inExpression
Case 19: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18))) = inExpression
Case 20: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19))) = inExpression
Case 21: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20))) = inExpression
Case 22: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21))) = inExpression
Case 23: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22))) = inExpression
Case 24: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23))) = inExpression
Case 25: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24))) = inExpression
Case 26: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25))) = inExpression
Case 27: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26))) = inExpression
Case 28: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27))) = inExpression
Case 29: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28))) = inExpression
Case 30: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29))) = inExpression
Case 31: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30))) = inExpression
Case 32: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31))) = inExpression
Case 33: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32))) = inExpression
Case 34: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33))) = inExpression
Case 35: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34))) = inExpression
Case 36: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35))) = inExpression
Case 37: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36))) = inExpression
Case 38: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37))) = inExpression
Case 39: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38))) = inExpression
Case 40: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39))) = inExpression
Case 41: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40))) = inExpression
Case 42: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41))) = inExpression
Case 43: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42))) = inExpression
Case 44: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43))) = inExpression
Case 45: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44))) = inExpression
Case 46: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45))) = inExpression
Case 47: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46))) = inExpression
Case 48: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47))) = inExpression
Case 49: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48))) = inExpression
Case 50: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49))) = inExpression
Case 51: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50))) = inExpression
Case 52: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50), idxs(51))) = inExpression
Case 53: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50), idxs(51), idxs(52))) = inExpression
Case 54: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50), idxs(51), idxs(52), idxs(53))) = inExpression
Case 55: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50), idxs(51), idxs(52), idxs(53), idxs(54))) = inExpression
Case 56: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50), idxs(51), idxs(52), idxs(53), idxs(54), idxs(55))) = inExpression
Case 57: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50), idxs(51), idxs(52), idxs(53), idxs(54), idxs(55), idxs(56))) = inExpression
Case 58: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50), idxs(51), idxs(52), idxs(53), idxs(54), idxs(55), idxs(56), idxs(57))) = inExpression
Case 59: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50), idxs(51), idxs(52), idxs(53), idxs(54), idxs(55), idxs(56), idxs(57), idxs(58))) = inExpression
Case 60: SetVar(outArr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50), idxs(51), idxs(52), idxs(53), idxs(54), idxs(55), idxs(56), idxs(57), idxs(58), idxs(59))) = inExpression
End Select
End Property
Rem 次元数不定の変数の値を取得
Rem
Rem @param arr 読込元変数
Rem @param idxs() 読込元インデックス配列
Rem
Rem @return As Variant 取得データ
Rem
Rem @example v = GetArr(arr, i, j)
Rem
Rem @note
Rem 過剰に付与されたインデックスは無視される
Rem
Public Property Get GetArr(arr, ParamArray idxs())
Select Case GetArrayDimension(arr)
Case 0: SetVar(GetArr) = arr
Case 1: SetVar(GetArr) = arr(idxs(0))
Case 2: SetVar(GetArr) = arr(idxs(0), idxs(1))
Case 3: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2))
Case 4: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3))
Case 5: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4))
Case 6: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5))
Case 7: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6))
Case 8: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7))
Case 9: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8))
Case 10: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9))
Case 11: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10))
Case 12: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11))
Case 13: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12))
Case 14: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13))
Case 15: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14))
Case 16: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15))
Case 17: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16))
Case 18: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17))
Case 19: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18))
Case 20: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19))
Case 21: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20))
Case 22: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21))
Case 23: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22))
Case 24: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23))
Case 25: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24))
Case 26: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25))
Case 27: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26))
Case 28: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27))
Case 29: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28))
Case 30: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29))
Case 31: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30))
Case 32: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31))
Case 33: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32))
Case 34: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33))
Case 35: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34))
Case 36: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35))
Case 37: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36))
Case 38: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37))
Case 39: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38))
Case 40: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39))
Case 41: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40))
Case 42: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41))
Case 43: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42))
Case 44: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43))
Case 45: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44))
Case 46: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45))
Case 47: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46))
Case 48: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47))
Case 49: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48))
Case 50: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49))
Case 51: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50))
Case 52: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50), idxs(51))
Case 53: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50), idxs(51), idxs(52))
Case 54: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50), idxs(51), idxs(52), idxs(53))
Case 55: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50), idxs(51), idxs(52), idxs(53), idxs(54))
Case 56: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50), idxs(51), idxs(52), idxs(53), idxs(54), idxs(55))
Case 57: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50), idxs(51), idxs(52), idxs(53), idxs(54), idxs(55), idxs(56))
Case 58: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50), idxs(51), idxs(52), idxs(53), idxs(54), idxs(55), idxs(56), idxs(57))
Case 59: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50), idxs(51), idxs(52), idxs(53), idxs(54), idxs(55), idxs(56), idxs(57), idxs(58))
Case 60: SetVar(GetArr) = arr(idxs(0), idxs(1), idxs(2), idxs(3), idxs(4), idxs(5), idxs(6), idxs(7), idxs(8), idxs(9), idxs(10), idxs(11), idxs(12), idxs(13), idxs(14), idxs(15), idxs(16), idxs(17), idxs(18), idxs(19), idxs(20), idxs(21), idxs(22), idxs(23), idxs(24), idxs(25), idxs(26), idxs(27), idxs(28), idxs(29), idxs(30), idxs(31), idxs(32), idxs(33), idxs(34), idxs(35), idxs(36), idxs(37), idxs(38), idxs(39), idxs(40), idxs(41), idxs(42), idxs(43), idxs(44), idxs(45), idxs(46), idxs(47), idxs(48), idxs(49), idxs(50), idxs(51), idxs(52), idxs(53), idxs(54), idxs(55), idxs(56), idxs(57), idxs(58), idxs(59))
End Select
End Property
Rem 次元数違反でエラーの起こらないLBound
Rem Lower Bound Through
Public Function LBT(var, dimension As Long)
LBT = 1
On Error Resume Next
LBT = LBound(var, dimension)
End Function
Rem 次元数違反でエラーの起こらないUBound
Rem Upper Bound Through
Public Function UBT(var, dimension As Long)
UBT = 1
On Error Resume Next
UBT = UBound(var, dimension)
End Function
Rem --------------------------------------------------------------------------------
Rem 配列の次元数を求める
Rem
Rem @param arr 対象配列
Rem
Rem @return As Long 次元数
Rem
Rem @example
Rem   非配列 : 次元数: 0
Rem 静的1次元 : 次元数: 1
Rem 静的2次元 : 次元数: 2
Rem 静的3次元 : 次元数: 3
Rem 動的空配列 : 次元数: 0
Rem 動的1次元 : 次元数: 1
Rem
Public Function GetArrayDimension(arr As Variant) As Long
Const VT_ARRAY = &H2000
Const VT_BYREF = &H4000
Dim va As TtagVARIANT
RtlMoveMemory va, arr, LenB(va)
If va.vt And VT_ARRAY Then Else Exit Function
If va.vt And VT_BYREF Then RtlMoveMemory va.sa, ByVal va.sa.Value, LenB(va.sa)
If va.sa.Value Then RtlMoveMemory GetArrayDimension, ByVal va.sa.Value, 2
End Function
Rem 多次元配列のテストデータを作成する(とりあえず5次元まで)
Function CreateTestArray(lb As Long, ParamArray dN_size())
Dim d1, d2, d3, d4, d5
Rem 上限要素数
Dim ub(1 To 5)
Dim i As Long
'Emptyだと飛ばされるのでlbで埋めておく
For i = LBound(ub) To UBound(ub): ub(i) = lb: Next
'序盤には指定された項目数を設定
For i = LBound(dN_size) To UBound(dN_size): ub(i + 1) = dN_size(i) - (1 - lb): Next
Dim arr
Select Case UBound(dN_size, 1) + 1
Case 1: ReDim arr(lb To ub(1))
Case 2: ReDim arr(lb To ub(1), lb To ub(2))
Case 3: ReDim arr(lb To ub(1), lb To ub(2), lb To ub(3))
Case 4: ReDim arr(lb To ub(1), lb To ub(2), lb To ub(3), lb To ub(4))
Case 5: ReDim arr(lb To ub(1), lb To ub(2), lb To ub(3), lb To ub(4), lb To ub(5))
End Select
For d1 = lb To ub(1): For d2 = lb To ub(2): For d3 = lb To ub(3): For d4 = lb To ub(4): For d5 = lb To ub(5)
SetArr(arr, d1, d2, d3, d4, d5) = Join(Array(d1, d2, d3, d4, d5), "-")
Next: Next: Next: Next: Next
CreateTestArray = arr
End Function
Option Explicit
Rem 動的に多次元配列のテストデータを生成するテスト
Sub Test_CreateTestArray()
Dim tStart As Single, tStop As Single: tStart = Timer
Dim i
For i = 1 To 1000
Dim arr
arr = CreateTestArray(1, 5, 4, 3, 4, 5)
Next
tStop = Timer: Debug.Print Format$(tStop - tStart, "0.00") & " sec."
' Stop
End Sub
Rem 0次元、1次元、2次元の変数を出力するテスト
Sub Test_DebugPrintVar()
Dim v0: v0 = 1
Dim v1: v1 = [{1,2,3}]
Dim v2: v2 = [{1,2,3;4,5,6;7,8,9}]
Dim v3: v3 = CreateTestData3(1, 2, 3)
DebugPrintVar v0
DebugPrintVar v1
DebugPrintVar v2
DebugPrintVar v3
End Sub
Rem 変数の内容を出力するだけのプロシージャ
Sub DebugPrintVar(v)
Dim d1, d2, d3
For d1 = LBT(v, 1) To UBT(v, 1)
For d2 = LBT(v, 2) To UBT(v, 2)
For d3 = LBT(v, 3) To UBT(v, 3)
Debug.Print _
"v(" & d1 & "," & d2 & "," & d3 & ")", _
GetArr(v, d1, d2, d3)
Next
Next
Next
Debug.Print
End Sub
Rem 従来方式1
Sub Test_DebugPrintVarNG1()
Dim v0: v0 = 1
Dim v1: v1 = [{1,2,3}]
Dim v2: v2 = [{1,2,3;4,5,6;7,8,9}]
' DebugPrintVarNG1 v0 '←サポート不可
DebugPrintVarNG1 v1
DebugPrintVarNG1 v2
End Sub
Rem 0次元が出力出来ない/インデックスが分からない/方向が固定される
Sub DebugPrintVarNG1(v)
Dim item
For Each item In v
Debug.Print "v(?)", item
Next
Debug.Print
End Sub
Rem 従来方式2
Sub Test_DebugPrintVarNG2()
Dim v0: v0 = 1
Dim v1: v1 = [{1,2,3}]
Dim v2: v2 = [{1,2,3;4,5,6;7,8,9}]
' DebugPrintVarNG2 v0 '←サポート不可
' DebugPrintVarNG2 v1 '←サポート不可
DebugPrintVarNG2 v2
End Sub
Rem 2次元まで対応した関数の場合、二次元以外は全てインデックスがありません
Sub DebugPrintVarNG2(v)
Dim i As Long, j As Long
For i = LBound(v, 1) To UBound(v, 1)
For j = LBound(v, 2) To UBound(v, 2)
Debug.Print "v(" & i & "," & j & ")", v(i, j)
Next
Next
Debug.Print
End Sub
Rem 非配列、一次元配列、二次元配列、三次元配列の内容を出力するテスト
Sub Test_DebugPrintVar_012()
Dim v0: v0 = 1
Dim v1: v1 = VBA.Array(1, 2, 3)
Dim v2: v2 = [{1,2;3,4;5,6}]
Dim v3: v3 = CreateTestData3(1, 2, 3)
DebugPrintVar_012 v0
DebugPrintVar_012 v1
DebugPrintVar_012 v2
DebugPrintVar_012 v3
End Sub
Rem 変数vの内容をイミディエイトに出力するプロシージャ
Sub DebugPrintVar_012(v)
Dim i As Long, j As Long, k As Long
Select Case GetArrayDimension(v)
Case 0
Debug.Print "v", v
Case 1
For i = LBound(v, 1) To UBound(v, 1)
Debug.Print "v(" & i & ")", v(i)
Next
Case 2
For i = LBound(v, 1) To UBound(v, 1)
For j = LBound(v, 2) To UBound(v, 2)
Debug.Print "v(" & i & "," & j & ")", v(i, j)
Next
Next
Case 3
For i = LBound(v, 1) To UBound(v, 1)
For j = LBound(v, 2) To UBound(v, 2)
For k = LBound(v, 3) To UBound(v, 3)
Debug.Print _
"v(" & i & "," & j & "," & k & ")", _
v(i, j, k)
Next
Next
Next
End Select
Debug.Print
End Sub
Rem 3次元配列のテストデータを作成する
Rem @param s1,s2,s3 配列の要素数
Rem @return 1-2-3形式の文字列の格納された三次元配列
Function CreateTestData3(s1, s2, s3)
Dim i As Long, j As Long, k As Long
Dim v
ReDim v(1 To s1, 1 To s2, 1 To s3)
For i = LBound(v, 1) To UBound(v, 1)
For j = LBound(v, 2) To UBound(v, 2)
For k = LBound(v, 3) To UBound(v, 3)
v(i, j, k) = Join(Array(i, j, k), "-")
Next
Next
Next
CreateTestData3 = v
End Function
Sub Test_Bound()
Dim v0: v0 = 1
Dim v1: v1 = [{1,2,3}]
Dim v2: v2 = [{1,2;3,4;5,6}]
Debug.Print "v0 : " & LBT(v0, 1) & " To " & UBT(v0, 1)
Debug.Print "v0 : " & LBT(v0, 2) & " To " & UBT(v0, 2)
Debug.Print "v0 : " & LBT(v0, 3) & " To " & UBT(v0, 3)
Debug.Print
Debug.Print "v1 : " & LBT(v1, 1) & " To " & UBT(v1, 1)
Debug.Print "v1 : " & LBT(v1, 2) & " To " & UBT(v1, 2)
Debug.Print "v1 : " & LBT(v1, 3) & " To " & UBT(v1, 3)
Debug.Print
Debug.Print "v2 : " & LBT(v2, 1) & " To " & UBT(v2, 1)
Debug.Print "v2 : " & LBT(v2, 2) & " To " & UBT(v2, 2)
Debug.Print "v2 : " & LBT(v2, 3) & " To " & UBT(v2, 3)
Debug.Print
End Sub
Sub Test_SetVar()
Dim lit As Long::: Let lit = 1
Dim obj As Object: Set obj = New Collection
Dim v
Let v = lit '正常に動く
' Set v = lit 'コンパイルエラー
SetVar(v) = lit '自動でLetされる
' Let v = obj '実行時エラー
Set v = obj '正常に動く
SetVar(v) = obj '自動でSetされる
End Sub
Sub Test_GetArr()
Dim v0: v0 = 1
Dim v1: v1 = [{1,2,3}]
Dim v2: v2 = [{1,2,3;4,5,6;7,8,9}]
Debug.Print GetArr(v0, 2, 3)
Debug.Print GetArr(v1, 2, 3)
Debug.Print GetArr(v2, 2, 3)
End Sub
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment