配列が大量であるため、サイクルのためにシートをExcelに渡すためにデータを書き込んでいましたが、より速い選択肢を検討した。配列から範囲へのセルへの書き込み:配列が範囲内に完全に表示されない
今、私は、配列に直接セルの範囲の値を設定して情報を表示しよう:
Sub displayRandomMatrix(clientsColl As Collection, resultWorkbook As Workbook)
Dim NamesRange As Range
With resultWorkbook.Worksheets("matrix_random")
...
Set NamesRange = _
.Range(.Cells(2, 1), .Cells(clientsColl.Count + 1, 1))
Dim NamesArray() As String
ReDim NamesArray(1 To clientsColl.Count)
Dim clientRow As Long
Dim simulation As Long
clientRow = 1
simulation = 1
Dim clientCopy As client
For Each clientCopy In clientsColl
For simulation = 1 To clientCopy.getRandomNumbers.Count
...
Next
NamesArray(clientRow) = clientCopy.getClientName
clientRow = clientRow + 1
Next
...
NamesRange.value = NamesArray
...
End With
'debugging
Debug.Print "**************start"
For clientRow = 1 To clientsColl.Count
Debug.Print NamesArray(clientRow)
Next
Debug.Print "**************end"
End Sub
しかし、私は、私は同じクライアントの名前はすべて必要で書かれていることがわかりresultWorkbook
を開いたとき第1列の細胞。同様に、コードのデバッグセクションが正しい出力を生成します - その配列に正しい複数のクライアント名があります。
その配列を範囲に割り当てると何かが壊れてしまうので、NamesRange.value = NamesArray
です。
同時に私は他の配列と同様のことを行い、うまくいきますが、これはバグが出てきます。
どういう理由が考えられますか?
注:clientsColl
は、適切なクライアントのコレクションです。それには何も問題はありません。どちらもresultWorkbook
ではありません。
ありがとう!私もコード内に1次元の配列を持っていますが、私はそれをいくつかの列(水平方向)に1行表示します。水平表示は、その配列で変換を行う必要はないという意味ですか? – Ans