filteredStartRow = A2 detailsStartRow = D2
※i = x(获取filteredItemCount的值,例如:2,3,2) ※j = y(获取detailsItemCount的值,例如:4,5,3)
我被困住了,我可以有效地转移到第二个filterStartRow(A4)和detailsStartRow(D10)。并继续,直到最后一个过滤器和详细信息StartRow。
我在做什么: 获取ItemCount(例如:x,y)以在过滤器和详细信息项中运行嵌套循环。 因为我已经知道过滤器和细节的下一个项目计数,所以我只需要更改我的NEXT filterStartRow和detailsStartRow。 如何使用(i,j)的任何动态设置构建我的循环以及设置STARTROW? 任何人都可以帮助代码。
这是我的代码,仅适用于第一个循环(绿色边框)。
startRow = 2
startRow1 = 2
nextDetailsRow = 0
For i = 1 To noOfFilteredItem (e.g:3)
mapFilteredItemCount = Worksheets("Sheet1").Cells(startRow, 3).Value
detailsItemCount = Worksheets("Sheet1").Cells(startRow1, 6).Value
With ThisWorkbook.Worksheets("Sheet1")
For m = 1 To mapFilteredItemCount
For n = 1 To detailsItemCount
If .Cells((startRow + m) - 1, 2) = .Cells((startRow1 + n) - 1, 5) Then
If IsEmpty(.Cells((startRow1 + n) - 1, 8).Value) = True Then
.Cells((startRow1 + n) - 1, 8).Value = "Deliver"
nextDetailsRow = nextDetailsRow + startRow + n
Else
GoTo NextIteration
End If
End If
NextIteration:
Next n
Next m
End With
Next i
我的问题是:
- 一旦循环(m,n)完成,我需要动态更新STARTROW和STARTROW1
- 如何指定STARTROW和STARTROW1变量以接收下一个起始行值。
我的逻辑:
- 我想把所有的STARTROW和STARTROW1号码保存到一个数组中,然后从数组中获取值
例如:
filteredItemRowArray()= 2,4,7(※过滤项目的起始行号)
detailsItemRowArray()= 2,6,11(※详细项目的起始行号)
但我无法安排此数组来保留行号值。
有谁可以帮助我,我非常感谢您的编程SMARTNESS。 如果您有任何疑问或了解问题,请告诉我。 非常感谢你。
答案 0 :(得分:0)
我会尝试相同的想法。通过数字循环数组。请尝试以下代码:
Sub Outer_Loop()
Dim StartrowArr, Startrow1Arr, I As Integer
Dim Startrow As Long, Startrow1 As Long
StartrowArr = Array(2, 4, 7)
Startrow1Arr = Array(2, 6, 11)
For I = LBound(StartrowArr) To UBound(StartrowArr)
Startrow = StartrowArr(I)
Startrow1 = Startrow1Arr(I)
Debug.Print "Loop " & I, "Startrow: " & Startrow, "Startrow1: " & Startrow1
' your code
Next I
End Sub