宏开始遍历从N19到C14(从左到右)的每个单元。但是到了C19时;问题是它出在桌子外面的B14。
我尝试包括End IF之类的一些语句,并考虑使用while函数,但似乎使问题复杂化了。
Sub Testtask()
Dim i As Long, j As Long
For j = -14 To 3
For i = 14 To 19
Cells(i, -j).Select
Next i
Next j
End Sub
该图显示了我的工作表以及与该问题相关的表格:
答案 0 :(得分:2)
编写的代码看起来像您会解释的那样:
[...]遍历从N19到C14的每个单元格
您希望列从N(14)变为C(3),对于每一列,您都希望从19变为14。由于两个循环都向后迭代,因此{{1 }}循环语法(FWIW它们都是关键字,而不是 functions ),是可选的useRef()
说明符,您需要将其指定为{{ 1}}。
For
请注意,一眼就不知道您要实现的目标,实际上没有任何理由倒退:您可以进入Step
和-1
,并使用完全相同的单元格从上到下,从左到右迭代。当事物自然流动时,代码更易于遵循:通常最好避免向后循环,除非您必须。
还请注意,Dim currentColumn As Long
For currentColumn = 14 To 3 Step -1
Dim currentRow As Long
For currentRow = 19 To 14 Step -1
Dim currentCell As Range
Set currentCell = Sheet1.Cells(currentRow, currentColumn)
'interact with the currentCell here
Next
Next
成员调用已明确地由currentColumn = 3 To 14
对象限定(此处为currentRow = 14 To 19
-您的里程可能有所不同);如果您真的想使用当前处于活动状态的工作表,则可以使用Cells
作为限定符并执行Worksheet
。