変数の次元を確認するVBA関数
2022年10月12日
セルの値を配列に格納するとき、
セルの方法によって配列の次元が変わったりする。
配列のサイズを調べるときにUbound関数を使うけど、
2次元配列の2次元目のサイズを調べるときに
1次元配列だったりするとエラーを吐く。
今回は、配列の次元を事前に調べる関数について
セルの方法によって配列の次元が変わったりする。
配列のサイズを調べるときにUbound関数を使うけど、
2次元配列の2次元目のサイズを調べるときに
1次元配列だったりするとエラーを吐く。
今回は、配列の次元を事前に調べる関数について
アルゴリズムは、ubound関数の引数を1次元ずつ増やしていって
エラーになる前がその変数の次元。
だっさいやり方だけど、ネットで調べる限りこれしかなさそう。。。
前の記事で配列のサイズが大きすぎてメモリ不足になったので
配列を1次元ずつ貼り付けるために判定で必要になった次第。
以下、ソース。
Function getDimention(Arr)
On Error GoTo ANS
Dim i As Long, tmpSize As Long
For i = 1 To 5
tmpSize = UBound(Arr, i)
Next i
ANS:
getDimention = i - 1
End Function
Function Array2dTo1d(Arr, col As Long)
If getDimention(Arr) <> 2 Then Stop '2次元じゃないし
Dim rowMax As Long: rowMax = UBound(Arr)
If rowMax < col Then Stop 'そこにはないし
Dim oArr(): ReDim oArr(rowMax, 0)
Dim i As Long
For i = 0 To rowMax
oArr(i, 0) = Arr(i, col)
Next i
Array2dTo1d = oArr
End Function
PR
Comment