我正在尝试创建一个可变范围,该范围将根据月份是哪个月来更新并引入不同的值范围。
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中执行此操作。
答案 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