好的我目前有一个数据库可以按月跟踪数据,因此每个月都有一个新的标签或工作表。我有一个我用来处理这些数据的第二个工作簿。我有下面的当前代码并且它工作得很好唯一的问题是我将不得不进入并改变它每月拉动的表单。 "表格(" 4月15日)。选择"。我的问题是;是否有一个方程式可以用来拉当前月份的工作表?
当前代码
Range("A1").Select
'
Workbooks.Open Filename:= _
"X:\GLOBLOPS\TRADE_PROCESSING\Procedures\Corporate Action\Full Call\Full Calls Tracker.xls"
Sheets("APRIL 15").Select
ActiveWindow.SmallScroll Down:=-27
Columns("A:I").Select
Selection.Copy
Windows("Copy of CorpAct_freeDeliver 3.13.15.xls").Activate
ActiveWindow.SmallScroll Down:=-12
ActiveSheet.Paste
Windows("Full Calls Tracker.xls").Activate
ActiveWindow.Close
Windows("Copy of CorpAct_freeDeliver 3.13.15").Activate
Sheets("Call Tracker").Select
答案 0 :(得分:1)
如果您总是在当月工作,并且所有数据都使用完整的月份名称和两位数年份进行格式化,则可以替换此行:
Sheets("APRIL 15").Select
这一个:
Sheets(ucase(format(now(), "mmmm YY"))).Select
如果您需要在时间上有更多的灵活性,可以使用代码中其他位置的日期变量替换now()
。如果选项卡名称格式使用较长月份名称的某些缩写,则您的建议也可能存在问题。
为了改善整体代码,需要添加的内容是阅读:How to avoid using Select in Excel VBA macros
是的,您可以使用该范围。有很多方法可以将这些信息输入您的程序。它可能会让您感到困惑,因为您仍然使用激活和选择,并且很难跟踪每张纸。我可能会改为:
Sub test()
Dim codeWorkbook As Workbook
Dim dataWorkbook As Workbook
Dim dateRange As Range
Dim sheetName As String
Set codeWorkbook = ThisWorkbook
Set dataWorkbook = Workbooks.Open(Filename:="X:\GLOBLOPS\TRADE_PROCESSING\Procedures\Corporate Action\Full Call\Full Calls Tracker.xls")
Set dateRange = codeWorkbook.sheets(1).Range("WHERE_EVER_DATE_IS")
sheetName = UCase(Format(dateRange.Value, "mmmm YY"))
dataWorkbook.Sheets(sheetName).Columns("A:I").Copy Destination:=codeWorkbook.Sheets(1).Range("A1")
'change the sheet and/or the range to what you need it to be
dataWorkbook.Close False
End Sub