#要点
・VBAの動的配列は最終要素のみ可変だから、2次元であれば "横長" の表になる。.Listプロパティに横長配列をセットしようとすれば、行⇔列変換のプロセスを経る必要があり、そこで一時的にメモリが食われる。サイズの大きな配列だと、メモリ不足エラーが返る。
・横長配列をそのままUserform.ListBox.Column=arrayとセットすれば、メモリの心配なく "縦長" で表示してくれる。
##補足
・ADODB.RecordSetの.GetRowsで返される配列も "横長"。ここでも.Columnプロパティが便利。
・配列を.Columnプロパティでセットしても、.Listプロパティは引き続き機能する。例えば配列要素をListBox.List(ListBox.ListIndex)で取ることができる(そもそも.ColumnIndexプロパティは無い)。
・ListBox1.List=arrayでセットした配列をarray=ListBox1.Columnで再代入すると、転置されている(逆も同様)。Excel関数を使ったApplication.WorksheetFunction.Transposeの転置にはクセがあって、"縦長1列" の2次元配列を転置すると "横長1行" の1次元配列となって自動的に次元が下がってしまうが、ListBoxの.Listと.Column間では2次元のまま。