2012-11-30 43 views
0

我在Excel vba中的Format()函數有問題。我試圖改變格式化日期格式的單元格來改變它的顯示方式。然而,每次我調用格式來做到這一點,我得到的錯誤:「編譯錯誤:錯誤的參數數量或無效的屬性分配。」格式化函數出錯

這裏是代碼:

Sub test() 
    Dim given 
    given = DateSerial(2012, 10, 11) 
    dateformat = Format(given, "dd/mm/yy") 
    MsgBox given & vbCrLf & dateformat 

End Sub 

這僅僅是一個測試功能和自身應有的功能,並返回「12年11月10日」。此代碼適用於其他計算機。什麼可能是錯的?

回答

0

目前,您正在聲明您的given變量爲默認變體。請聲明它爲Date數據類型。爲了安全起見,請確保只使用CDate()Date發送到Format(),以格式化爲所需日期樣式。

另外DateSerial輸入應採用以下格式。你的情況哪個好。 ;)

DateSerial(CInt(x), CInt(y), CInt(z) 

代碼片段:

OPTION EXPLICIT '------------ please add this to your code to begin for better coding 

Sub test() 
    Dim given as Date '-------- define given as Date type 
    Dim dateformat as Date 
    given = DateSerial(2012, 10, 11) 
    dateformat = Format(CDate(given), "dd/mm/yy") '--------- anyway wrap with CDate() to be sure 
    MsgBox given & vbCrLf & dateformat 

End Sub 
+0

選項顯式總是在那裏我只是不包括它通常。我嘗試使用cdate,但這次得到了不同的錯誤消息。它期望一個變體而不是一個模塊。感謝您的嘗試,我現在放棄格式化問題。我寫了一篇關於這個工作的文章,如果有點不雅的話。 – uncertaintea

+0

我嚴重忘了問你,因爲我認爲你的'dateformat'變量是'Date' .... – bonCodigo

+0

你沒有一個函數/子調用「給定」,是嗎?在這種情況下,它會抱怨錯誤的參數數量,因爲它預期給(...)作爲函數,並且會在CDate中使用它時發生抱怨。只是一個想法(之前發生在我身上)。只需使用不同的變量名稱而不是'given',看看這是否有所作爲。如果確實如此,Vb會將其定義在其他地方 – ssollinger

3

曾與代碼這個問題,我把在Worksheet_Activate()今天,並拉我的頭髮。通過改變格式,以VBA.Format

因此,嘗試解決它:

Sub test() 
    Dim given 
    given = DateSerial(2012, 10, 11) 
    dateformat = VBA.Format(given, "dd/mm/yy") 
    MsgBox given & vbCrLf & dateformat 

End Sub 
0

這是因爲你也可能在你的project.Hence一些Sub命名Format別的地方你的錯誤。