2015-11-04 52 views
-2

使用下面的代碼,這是來自整個宏的幾行,但我需要能夠輕鬆地更改日期criteria1,而無需每次都手動執行。這是在月度報告工作表上。日期的格式是從數據收集數據庫生成的,不能更改。在宏中更改日期標準1的宏

是否存在能夠通過使用宏來更改宏(宏中的一行)的代碼,特別是我的示例中的日期?

Sheets("Raw Data 3M").Select 
    Cells.Select 
    Application.CutCopyMode = False 
    Selection.AutoFilter 
    ActiveSheet.Range("$A$1:$I$1000").AutoFilter Field:=8, Criteria1:= _ 
    "=2015  -10-October" 
    Range("A1:I5000").Select 
    Selection.Copy 
    Sheets("Raw Data").Select 
    Range("A1").Select 
    ActiveSheet.Paste 
+0

本月數據爲2015年-10月 - 10月,下個月爲2015年11月 - 11月,依此類推。編號喜歡將較晚的月份代碼與較舊的月份進行交換。對不起,有什麼困惑 – Inglis

+0

日期有沒有模式? –

+0

我能想到回答這個問題的唯一方法就是......是的......我每月使用這些工作表一次。例如,這個月的即將到來的月份將顯示爲2015-10-10月。下個月將是2015-11至11月。我有多個宏來執行與不同工作表類似的功能。而不是手動將十月份更改爲十一月份,我想要一個宏爲我做......想過? – Inglis

回答

0

英格利斯,

有幾種方法可以做到這一點。

如果你想,我不會推薦分配,(因爲用戶可以啞)的最快途徑,只需設置自動篩選條件的輸入框:

ActiveSheet.Range("$A$1:$I$1000").AutoFilter Field:=8, Criteria1:= _ 
inputbox("Prompt","Title","=2015  -10-October") 

只需更換提示標題更合適。

您也可以根據需要設置輸入框來格式化輸入的日期,但如果您不遵循特定的格式,則代碼將出錯。如:

Dim vDate as Variant 
vDate = inputbox("Type a date in the format dd/mm/yyyy") 
vDate = DateSerial(Mid(vDate, 7, 4), Mid(vDate, 4, 2), Mid(vDate, 1, 2)) 
vDate = "=" & Format(vDate, "yyyy  -dd-mmmm") 
ActiveSheet.Range("$A$1:$I$1000").AutoFilter Field:=8, Criteria1:=vDate 

希望這有助於!

+0

第二個選項效果很好!謝謝! – Inglis