我正在尝试创建一个变量范围,该范围将根据月份更新并引入不同的值范围。
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 ProjectsChk Req & Customer
Payment SheetChk ReqsCheck 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中做到这一点。
执行此操作的一种方法是使用Month函数返回当前月份编号,然后可以将其用作起始范围的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 ProjectsChk Req & Customer Payment SheetChk ReqsCheck 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