忍者ブログ

変数の次元を確認するVBA関数

2022年10月12日
セルの値を配列に格納するとき、
セルの方法によって配列の次元が変わったりする。

配列のサイズを調べるときに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
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字