我的If函数将不被考虑

时间:2019-05-24 13:33:22

标签: excel vba

宏开始遍历从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

该图显示了我的工作表以及与该问题相关的表格:

The image shows my working sheet and the table related to in the question

1 个答案:

答案 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