[プログラミング: VBA] Transpose関数 の要素数制限?

  • 2020年1月31日
  • 2020年10月24日
  • Brain
[プログラミング: VBA] Transpose関数 の要素数制限?

[プログラミング: 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

この記事を購入する

>最強のWordPressテーマ「THE THOR」

最強のWordPressテーマ「THE THOR」

本当にブロガーさんやアフィリエイターさんのためになる日本一のテーマにしたいと思っていますので、些細なことでも気が付いたのであればご報告いただけると幸いです。ご要望も、バグ報告も喜んで承っております!

日本国内のテーマでナンバー1を目指しております。どうか皆様のお力をお貸しください。よろしくおねがいいたします。

CTR IMG