Excel VBA - 使用范围变量动态设置一组单元格

时间:2017-02-21 06:26:51

标签: excel vba excel-vba

我目前的代码在特定工作表中向下查看单元格中某个值的列。如果它在单元格中找到该值,则它将该单元格用作子例程其余部分的锚点位置。这是相关的代码。

With DailyWS
    Set DailyTable = .Range("C7:Q21")
    Set Week = .Range("F4")
End With 'DailyWS

Set rngY = BackupWS.Range("B1:B10000").Find(Replace(Week.Value, " Week", ""), lookat:=xlPart)

If rngY Is Nothing Then
    Set rngY = BackupWS.Range("B1").Offset(LastRow, 0)
End If

With BackupWS
    Set BackupTable = rngY.Offset(0, 2)
End With 'BackupWS

我需要获取DailyTable范围内的信息并将其复制到BackupTable范围。由于它目前已经编码,它只复制一个单元格,因为rngY只返回一个单元格[对于子程序的其他部分我仍然需要rngY成为这个单元格]。

所以我需要的是从DailyTable单元格开始复制rngY。例如,如果rngY返回为C1,那么我需要将BackupTable设置为C1:Q15,然后执行.Offset(LastRow, 0)

我不确定如何成功地操纵它来做到这一点。如果您需要澄清,请询问。

1 个答案:

答案 0 :(得分:2)

来自您的请求:

  

如果rngY返回为C1,那么我需要将BackupTable设置为范围   C1:Q15然后执行.Offset(LastRow,0)。

变化:

If rngY Is Nothing Then
    Set rngY = BackupWS.Range("B1").Offset(LastRow, 0)
End If

With BackupWS
    Set BackupTable = rngY.Offset(0, 2)
End With 'BackupWS

为:

With BackupWS
    Set rngY = .Range("B1:B10000").Find(Replace(Week.Value, " Week", ""), lookat:=xlPart)

    If rngY Is Nothing Then Set rngY = .Range("B1").Offset(LastRow, 0)

    Set BackupTable = .Range(rngY, .Range("Q15")).Offset(LastRow, 0)
End With 'BackupWS

但您可能希望为实际目标添加更多详细信息