2017-08-29 118 views
0

的格式我有一個包含日期dd/mm/yyyy格式列V。但系統格式顯示爲mm/dd/yyyy。我想將日期格式從dd/mm/yyyy轉換爲dd-mmm-yyyyVBA更改日期

ThisWorkbook.Sheets(1).Range("W" & i).NumberFormat = "dd-mmm-yyyy"

當我使用上述代碼轉換它,它改變從08/02/201702-Aug-2017值。它應該更改爲08-Feb-2017。請協助。

+1

檢查您的區域設置。 Excel認爲你正在進入8月2日 - 當我們的幾個系統上的報告匆忙設置並且用戶離開美國日期時,我也遇到了同樣的問題....開始感覺到人們對於人們的咆哮不勾選正確的方框。 –

+0

我不相信。牢房中的日期必須有錯誤。它只做那裏有什麼......也許你應該再次在單元格中輸入日期並重試它... – 2017-08-29 09:26:25

+0

我剛試過它,它適用於我...如果它沒有在單元格中有錯誤的日期做你想做的事。 – 2017-08-29 09:28:15

回答

0

開始從一開始和嘗試簡化一切。 8.Feb.2017是Excel系統中的第42774天。因此,在一個空片運行以下並檢查結果:

Option Explicit 

Public Sub TestMe() 

    [a1] = 42774 '08-Feb-17 
    [a2] = [a1] 
    [a3] = [a1] 
    [a4] = [a1] 

    [a2].NumberFormat = "dd-mmm-yyyy" 
    [a3].NumberFormat = "mmm-dd-yyyy" 
    [a4].NumberFormat = "dd-mm-yyyy" 

End Sub 

在Excel中,1天1-JAN-1900。VBA第1天是1899年12月31日。

+0

實際上,第1天是1900年1月1日。第0天顯示爲1900年1月0日。第60天顯示爲1900年2月29日不存在。愚蠢的Excel。 – YowE3K

+0

@ YowE3K - 真的,我在想VBA。 – Vityata

+1

Ahh - 我還沒有意識到它在VBA中反向工作,因此在第60天處理爲1900年2月28日,因此在第0天處理爲1899年12月30日。我認爲他們都做了同樣的事情。 (我已經學會了今天的一些瑣事:)) – YowE3K

0

沒有什麼不對您的代碼。您輸入了「08/02/2017」 - 這被解釋爲格式爲「mm/dd/yyyy」的輸入。因此,該單元顯示「2017年8月2日」。

您必須更改系統的日期格式讀取與格式日期值「DD/MM/YYYY」輸入(2​​017年8月2日)。之後,您的手機將會以您需要的格式&價值(2017年2月8日)向您顯示日期。

要更改系統的日期格式,進入控制面板>區域&語言。您目前的格式必須是「英文(美國)」[或帶mm/dd/yyyy日期格式的東西]。將其更改爲「英語(英國)」。

這應該把你的問題的關心。