可变范围VBA使用月

时间:2018-08-07 17:39:44

标签: excel vba excel-vba

我正在尝试创建一个可变范围,该范围将根据月份是哪个月来更新并引入不同的值范围。

January C8:D8
February C9:D9
March C10:D10
April C11:D11
May C12:D12
June C13:D13
July C14:D14
August C15:D15
September C16:D16
October C17:D17
November C18:D18
December C19:D19

这些是我需要根据其月份的范围。

我的现有代码:

Sub PullDataFromClosedWorkbook()

Dim Source As Workbook

Set Source = Workbooks.Open("H:\Integration Projects\Chk Req & Customer 
Payment Sheet\Chk Reqs\Check Request.xlsm", True, True)
'bring to this workbook

ThisWorkbook.Activate

Worksheets("Sheet1").Range("B2:C2").Formula = Source.Worksheets("Consolidated 
Summary").Range("C11:D11").Copy

Worksheets("Sheet1").Range("B2:C2").PasteSpecial xlPasteValues

Source.Close SaveChanges:=False

End Sub

我的第一个想法是创建一个if函数,该函数基于一个包含月份的下拉列表,以便可以查找月份并将范围设置为该月份。不确定如何在vba中执行此操作。

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是使用Month Function返回当前月份号,然后您可以从起始范围将其用作Offset

例如,由于是八月,Month(Date)返回8。如果起始范围为C7:D7,则Range("C7:D7").Offset(Month(Date))指向C15:D15

所以您的代码可能看起来像这样(未测试)。

Sub PullDataFromClosedWorkbook()
    Dim Source As Workbook

    Set Source = Workbooks.Open("H:\Integration Projects\Chk Req & Customer Payment Sheet\Chk Reqs\Check Request.xlsm", True, True)
    ThisWorkbook.Worksheets("Sheet1").Range("B2:C2").Value = Source.Worksheets("Consolidated Summary").Range("C7:D7").Offset(Month(Date)).Value
    Source.Close SaveChanges:=False

End Sub