2017-03-15 211 views
1

不知道爲什麼我的「格式」沒有給我一個日期在我的文件名的末尾。我有參考中檢查「Visual Basic For Applications」。excel格式(日期,「yyyymmdd」)導致編譯錯誤

Dim dt As String 

dt = Format(Date, "yyyymmdd") 

MyFileName = Sheets("Order Summary (2)").Range("B2").Value & "_" & dt 

我這個每次都遇到

enter image description here

+1

日期是一種類型,您需要給它一個實際日期而不是數據類型。所以:dt =格式(現在是「yyyymmdd」) – Sorceri

+2

@Sorceri - Date是工作表上'= TODAY()'的VBA等價物。 @Matt,我可以發現你的代碼沒有錯;它對我來說運行良好(在字符串concatenatiopn之後對'Debug.Print MyFileName')。 – Jeeped

+4

@Sorceri Date是VBA.DateTime類的一個屬性,它應該返回當前日期。我可以在即時窗格中輸入這個語句'?Format(Date,「yyyymmdd」)',並得到預期的結果:20170315. –

回答

0

由於@Sorceri評論,請使用Now

MyFileName = Sheets("Order Summary (2)").Range("B2") & VBA.Format(Now, "_yyyymmdd") 

或者如果失敗了任何機會,也有Evaluate選擇:

MyFileName = ['Order Summary (2)'!B2 & TEXT(NOW(), "_yyyymmdd")] 
+1

我看不到'Now'的功能與'Date'有什麼不同。當我不需要時間片時,我總是使用'​​Date'來處理事物。 – Kyle

+0

@Kyle'Date'既是一種類型也是一種方法,所以我不確定這是否會導致與不同引用的衝突,或者問題與未顯示的其他代碼有關(更有可能) – Slai

+0

我知道它既是,但我當然希望這是在語言設計中考慮的。如果這個事實導致問題,看起來像是一個大規模的監督。 – Kyle