2012-02-24 214 views
1

我試圖通過在表格中添加一個月來輸入日期值(「Sheet1」)。單元格(17,3)。值是01/10/2011但格式爲Oct-11。然後在表( 「工作表Sheet」)返回。將細胞(17,4)。價值= LDate,展現NOV-11Excel VBA - 日期格式自動更改

sDate = Sheets("Sheet1").Cells(17, 3).Value --> this shows 01/10/2011 when I hove over sDate 
LDate = DateAdd("m", 1, sDate)    --> this shows 01/11/2011 when I hove over LDate 

我想然後在以下細胞來輸入該值01/11/2011

Sheets("Sheet1").Cells(17, 4).Value = LDate 
Selection.NumberFormat = "mmm-yy" 

但在單元格中顯示11/01/2011(1月11日),爲什麼它這樣做,我該如何解決這個問題?

回答

1

小問題

Selection.NumberFormat = "mmm-yy" 

所以無論你離開光標這種格式放在您沒有選擇任何東西。

主要問題

你已經打了Excel漏洞,這將解釋日期,如果它能夠將數據傳送到一個工作表中美國(中端)格式之中。 「2011年1月11日」將是「1月11日11日」給美國人,所以它是Excel。 「20/11/2011」不是有效的美國日期,所以Excel是「11月20日」。

我可以通過將sDate和LDate聲明爲字符串來複制您的問題。 DateAdd與字符串正確工作,所以LDate是正確的,但是當放置在單元格中時,它會被誤解。

我可以通過聲明SDATE和LDate如日期解決您的問題:

Dim sdate As Date 
Dim Ldate As Date 
1

- >這表明01/10/2011當我在繩拉SDATE

我猜你的默認日期格式爲「MM/DD/yyyy「,因此你正在解決這個問題。

在運行宏之前,右鍵單擊圖紙(「Sheet1」)。單元格(17,3)並單擊格式。然後檢查該單元格的格式。

EDIT

如果是則毫米/日/年的小區的值更改爲10/01/2011,然後再次嘗試該宏。

0
Selection.NumberFormat = "mmm-yy" 

上面一行正在改變數字格式。實際上,當我正在通過你的步驟時,我遇到了同樣的問題。

但數字格式正在做所有這些自動更改。

實施例:

  1. 儘管正在運行的宏中,假設選擇的小區是(17,3)

    • 運行宏之前:單元格的值是01/11/2012
    • 運行宏後:單元格的值將變爲/格式化爲"Jan-12"。(由於數字格式爲"mmm-yy"應用,所以它認爲是01/11/2012被認爲是Jan-12
  2. 第二次,如果您選擇單元格(17,4)

    • 運行宏之前:單元格的值是2/11/2012
    • 運行宏後:單元格值將被更改/格式爲"Feb-12"
0

而不是試圖

Cells(row2,col2) = Cells(row1,col1) 

試試這個

Cells(row1,col1).Copy 
Cells(row2,col2).PasteSpecial Paste:=xlPasteValuesAndNumberFormats