Dim HighScoreOneHourData() As Integer
Dim HighScoreOneHourDates() As String
ReDim HighScoreOneHourData(1 To UBound(SA, 1) - 3)
ReDim HighScoreOneHourDates(1 To UBound(SA, 1) - 3)
For j = 4 To UBound(SA, 1)
HighScoreOneHourData(j - 3) = CInt(Val(SA(j, PositionInArray DataColumn 2)))
HighScoreOneHourDates(j - 3) = SA(j, 1)
Next j
SortSheet.Range("A1:A" & UBound(HighScoreOneHourDates)) = HighScoreOneHourDates
SortSheet.Range("B1:B" & UBound(HighScoreOneHourData)) = HighScoreOneHourData
當上面示例中的最后兩行被執行時,作業表中的所有單元格都被陣列中的第一個元素填充。
HighScoreOneHourDates 是一個由連續日期填充的陣列。仍然只有第一個日期被列印到作業表上。
我已經停止了代碼并檢查了陣列的狀態以及它們是否已正確填充。
任何人都知道為什么單元格充滿了第一個元素?
uj5u.com熱心網友回復:
已經解釋了為什么一維陣列不適合你。更好的解決方法是將它們調暗為 2D
ReDim HighScoreOneHourData(1 To UBound(SA, 1), 1 To 1) As Integer
ReDim HighScoreOneHourDates(1 To UBound(SA, 1), 1 To 1) As String
For j = 4 To UBound(SA, 1)
HighScoreOneHourData(j - 3, 1) = CInt(Val(SA(j, PositionInArray DataColumn 2)))
HighScoreOneHourDates(j - 3, i) = SA(j, 1)
Next j
SortSheet.Range("A1:A" & UBound(HighScoreOneHourDates, 1)) = HighScoreOneHourDates
SortSheet.Range("B1:B" & UBound(HighScoreOneHourData, 1)) = HighScoreOneHourData
uj5u.com熱心網友回復:
一維陣列總是希望以一行而不是一列的形式放置在作業表上。這就是為什么你只會重復第一個元素。您需要重新定向陣列以將其放入列中,或使您的陣列為 2D(1 到 numHere,1 到 1)
請注意,您可以傳遞的陣列大小有一個限制Transpose
,大約為 63-64k 個元素。
假設您的陣列是基于 1 的,您可以這樣做:
SortSheet.Range("A1:A" & UBound(HighScoreOneHourDates)) = _
Application.Transpose(HighScoreOneHourDates)
例如。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/513821.html
標籤:擅长vba