我有一個快速問題,我希望熟悉數組的人都能輕鬆回答。具有(1)值的動態數組 - VBA Excel
我已經有了一個由不同數目的空格分隔的列。我有程序添加數字。當它遇到一個空單元格時,它應該將該數字添加到數組中,通過(1)增加數組中的空格數量,並將總計數器設置回零,然後跳到循環的下一次迭代,開始計數直到再次遇到空格。隨着時間的推移,會有不同數量的清單。我不認爲會有超過3-4個,但如果將來還有更多的話,我想編程來處理它。
因此,例如,單元格C4:C10包含的數字合計爲200,則單元格C11爲空。單元格C12:C14包含的數字合計爲150.我希望該數組在第一個點存儲200個,第二個點存儲150個數字。然後我想要消息框彈出告訴我「列表1是200」,列表2是150「等...
現在,我得到下標越界,但我認爲這是因爲我沒有聲明數組的大小,我希望它是動態的,但我不知道如何讓一個數組只包含(1)槽,它總是類似於arr(0到1)。在我看到的例子中只看到一個值,而且因爲它在for循環中,所以如果我做了一個用於綁定到ubound的循環,我想它會像「List 1 is 200」,「List 2是「沒有價值的第二個,因爲沒有數據,如果只有一個列表。
我可能會在想這個或以錯誤的方式去做,但我從來沒有真正使用過數組。我認爲這將有助於這個計劃。感謝您的任何幫助,您可以提供。
我打算提供下面的混亂。我還沒有清理過這個問題,並對它進行了評論,但是,你可以問問你是否有問題。我確信我做錯了,我只是想告訴你我要去哪裏。
Private Sub cmdTest_Click()
Dim wb As Workbook
Dim ws As Worksheet
Dim intCounter As Integer
Dim intValue As Integer
Dim strCell As String
Dim arr() As Long
Dim intArr As Integer
Set wb = Application.Workbooks("ListTotal.xlsm")
Set ws = wb.Worksheets("Main")
Call LastRowWithData_xlUp_1(lastColRow)
MsgBox "Number of lists is: " & WorksheetFunction.CountIf(Range("C3:C" & lastColRow), "") + 1
Call FindLastRow(LastRow)
'Count pages left in each series
intValue = 0
'set number of values in array
intArr = 1
For i = 3 To LastRow
strCell = "C" & i
If Range(strCell) = "" Then
arr(0) = intValue
intValue = 0
GoTo NextIteration
End If
openingParen = InStr(Range(strCell), "[")
closingParen = InStr(Range(strCell), "]")
enclosedvalue = Mid(Range(strCell), openingParen + 1, closingParen - openingParen - 1)
intValue = intValue + enclosedvalue
MsgBox "The number of pages in this book is: " & enclosedvalue
NextIteration:
MsgBox "The total pages left in the series is: " & intValue
Next
For i = LBound(arr) To UBound(arr)
MsgBox ("The number of pages left in Series " & j & " is:") 'arr(i))
Next i
End Sub
這聽起來像你需要調整數組的大小。你可以通過使用'Redim'來實現。像'Redim Arr(99)'這樣的東西可以將1維數組放大100個空元素。你是否想要每行有足夠的空間?如果是這樣,你可以使用LastRow,儘管我沒有看到聲明的位置。 –
嘿瑞恩。是的,我確實看到了如何調整它的大小。我可以使用Redim Preserve Arr。我沒有保存每一行。我總計每個列表並將總數保存在數組中。我的想法是,我可以遍歷數組並顯示每個總數。所以,如果我有3個列表,我可以做一個循環,在那裏我得到數組的ubound並且從j = 1到ubound,msgbox「總數是:」&arr(j)。 – Dalton