[プログラミング: VBA] Transpose関数 の要素数制限?
0 件のレビューがあります
平均スコア 0.0
まず、Transpose関数は何をするための関数なのか?というと、、、
簡単に言うとセルをコピーして貼り付けする際に使用する
”行/列の入れ替え (T)” をVBAで使うための関数です。
この関数はシート上に出力するときだけでなく、2次元配列に対しても有効です。
しかし、このTranspose関数については明記されていない制限があるようで、ハッキリと”○行×○列に対して有効”とか”2次元配列の要素数が○個までは入れ替えができる”とは記述が無いようです。
そこで、独自にどれぐらいまで使えるのかを検証してみました。
<検証環境>
<検証用のコード>
Sub WF_Transpose_test()'===== 変数宣言 ==================================================== Dim i As Long, j As Long Dim varSample As Variant Dim lngAryYCnt As Long, lngAryXCnt As Long Dim lngAryCnt As Long'=================================================================== '----- 配列の要素数を指定 lngAryYCnt = 100 '行の要素数を指定 lngAryXCnt = 290800 '列の要素数を指定 lngAryCnt = lngAryYCnt * lngAryXCnt '要素数の合計 '----- 配列を再宣言 ReDim varSample(1 To lngAryYCnt, 1 To lngAryXCnt) '----- 試す On Error GoTo ErrLine varAft = WorksheetFunction.Transpose(varSample) ErrLine: If Err.Number = 0 Then Debug.Print _ "要素数:" & Format(lngAryCnt, "#,##0") _ & Format(lngAryYCnt, "(#,##0") & "*" & Format(lngAryXCnt, "#,##0)") _ & vbTab & "正常終了" Else Debug.Print _ "要素数:" & Format(lngAryCnt, "#,##0") _ & Format(lngAryYCnt, "(#,##0") & "*" & Format(lngAryXCnt, "#,##0)") _ & vbTab & Err.Number & vbTab & Err.Description Err.Clear End IfEnd Sub
簡単に上記の説明をすると、lngAryYCnt に配列の行にあたる要素数を指定し、lngAryXCnt に列にあたる要素数を指定します。
配列に入れる値の大きさによって結果のバラツキが出ないように配列の各要素の中には何も代入していません。
そして、そのままコードを実行するとイミディエイトウィンドウに配列の要素数合計(行要素数×列要素数)と”正常終了” または エラー番号とエラーメッセージが出力されます。
この記事のレビュー
0 件のレビューがあります
平均スコア 0.0