Excel VBA - 如何将水平范围向下移动一行

时间:2017-08-08 19:10:01

标签: excel vba excel-vba

我正在创建一个日历,用于检查项目截止日期的报告以及与日历匹配的任何日期,然后突出显示匹配的单元格,并在该月右侧的2列中写入项目的日期和名称。

我这一周都在做这个,一年中的所有12个月。所以,不是每年的每个星期都这样做,而是想做一个循环,循环代码1周,5次。然后把它放在一个循环中,它会在12个月内完成。我有一个月的第一周的代码,并希望将变量“x”添加到范围中,以便我可以在一周之后将范围向下移动1行以添加1到下一周。我无法找到将“x”放在范围内的方法。

任何帮助都将在这里得到赞赏我的代码:

'for january
Set januaryRng = ActiveSheet.Range("A2:G2")
i = 2
For x = 0 to 4
For Each cell In januaryRng
 If cell <> "" Then
         For i = 2 To lastRow
               If cell.Value = Sheets("Incident Summary Report").Cells(i, "AI").Value Then
                Sheets("sheet1").Cells(2 + x, "I") = Sheets("sheet1").Cells(2 + x, "I") & Chr(10) & Sheets("Incident Summary Report").Cells(i, "B").Value
               ElseIf cell.Value = Sheets("Incident Summary Report").Cells(i, "AJ").Value Then
                   Sheets("sheet1").Cells(2 + x, "I") = Sheets("sheet1").Cells(2 + x, "I") & Chr(10) & Sheets("Incident Summary Report").Cells(i, "B").Value
              End If
              If cell.Value = Sheets("Incident Summary Report").Cells(i, "AI").Value Then
                  Sheets("sheet1").Cells(2 + x, "H") = Sheets("sheet1").Cells(2 + x, "H") & Chr(10) & Sheets("Incident Summary Report").Cells(i, "AI").Value
              ElseIf cell.Value = Sheets("Incident Summary Report").Cells(i, "AJ").Value Then
                 Sheets("sheet1").Cells(2 + x, "H") = Sheets("sheet1").Cells(2 + x, "H") & Chr(10) & Sheets("Incident Summary Report").Cells(i, "AJ").Value
                End If
          Next i
      Else
 End If
Next cell
Next x

1 个答案:

答案 0 :(得分:2)

我知道你现在要去哪里

您循环播放的范围(ActiveSheet.Range("A2:G2"))仅包含第一周的7天(单元格),对吧?

您需要做的是在x循环迭代时设置新范围。

这意味着您需要移动此部分:

Set januaryRng = ActiveSheet.Range("A2:G2")

在这部分下面:

For x = 0 to 4

然后你需要改变你的范围参考

"A2:G2""A" & 2 + x, "G" & 2 + x

总而言之,它看起来像是

'for January
i = 2
For x = 0 to 4
    Set januaryRng = ActiveSheet.Range("A" & 2 + x, "G" & 2 + x)
    For Each cell In januaryRng
        If cell <> "" Then
            ......

这样,januaryRng将从.Range("A2", "G2")更改为.Range("A3", "G3") ...依此类推。

应该。