2016-03-04 61 views
0

你好, 這是我在這裏的第一個問題,我的英語不是最好的,所以我會努力盡我所能理解。數據格式VBA

我得到了一些代碼,我需要以格式「dd/mm/yyyy」插入數據到一個單元格中,但我不知道它的格式,我無法更改它(受保護的表格)。

Dim sReversalDate As String 
sReversalDate = "" & Format(DateSerial(Year(Now()), Month(Now()), 1), "dd/mm/yyyy") 
sh.Range("M10").Value = sReversalDate 

在調試過程中,我sReversalDate的值是「2016年1月3日」,但將其放入電池後,Range("M10").Value是「2016年3月1日」。你知道我怎麼能解決這個問題嗎?再次 - 我無法更改表單的保護,或者我不想要:)我想檢查它是否可能。由於

一兩件事。對於少數幾個單元格,我在日期之前用「'」製作了技巧,並且工作正常。在這種特殊情況下,我無法做到這一點,因爲這個單元與另一個正在驗證它的單元相連,並尖叫着「嘿,格式日期!」等

感謝您的時間,並幫助球員:)

+0

請在插入值後檢查單元格格式。根據您的系統設置,輸入的值可能會重新格式化爲美國設置。 「 - 「「&sReversalDate –

+0

我知道這件事情,如果你不小心輸入的值是否爲文本,那麼你可以簡單> sh.Range(‘M10’)=值前值字符」插入。我也在我的帖子中寫過,但是對於這個特定情況,我不能這麼做,因爲這個單元受到另一個單元的「保護」,這個單元正在驗證輸入的數據類型,並在它不正確時尖叫。 另外我不能知道這個單元格的格式,因爲它改變了某種方式,我可以看到數據類型中的「常規」。有時它的「會計」(所以我猜它改變了某處)。我完成了它..我沒有想法 – Damian

回答

0

更改您最初的格式,以"mm/dd/yyyy",然後在最後的單元格的格式更改爲"dd/mm/yyyy;@"

Dim sReversalDate As String 
sReversalDate = "" & Format(DateSerial(Year(Now()), Month(Now()), 1), "mm/dd/yyyy") 
sh.Range("M10").Value = sReversalDate 
sh.Range("M10").NumberFormat = "dd/mm/yyyy;@" 
+0

正如我之前所說,由於這個工作表受到保護,我無法更改單元格的格式。我也無法更改此工作簿的保護。 – Damian

+0

如果工作表受到保護,您如何填充單元格M10中的值? –

+0

IDK,我想單元格的屬性是受保護的,因爲整個功能區和上下文菜單都是灰色的(我的意思是我不能改變f.e,字體,邊框等),但是我可以改變單元格的值。這是可能的,足夠清晰的描述?對不起,我的英語 – Damian

0

寫在下面開始你的代碼:

ActiveSheet.Unprotect Password:="myPassword" 

這結尾:

ActiveSheet.Protect Password:="myPassword" 
+0

我不知道這個項目的保護密碼,我不想銷燬這個工作簿。它安全嗎? 我的意思是,這個工作簿的密碼,我不知道這行代碼後會是一樣的,它會讓我改變格的格式?對不起,對於「新手問題」,我仍然在學習 – Damian

+0

是的,如果它受到保護並且它有一個密碼,那麼這段代碼就會像運行代碼之前一樣離開WB ... –

+0

是的,那就是好主意,但我不知道一個密碼來改變這個工作簿的保護:) – Damian

0

好吧,我做到了其他方式。 我添加下面一行代碼:

sReversalDate = "'" & Format(DateSerial(Year(Date), Month(Date), 1), "mm/dd/yyyy") 
.Range("M10") = sReversalDate 
.Range("m10") = Right(sReversalDate, Len(sReversalDate) - 1) 

在我的情況下,它的工作。我想格式化一個單元格是不好的,幾個月隨着日子而改變。無論如何,你可能沒有人會知道答案,而不會看這個特定的工作簿。

事實上,沒有一個答案是正確的,但有可能給+1,如果有人對我沒有幫助,但至少他嘗試?

我想感謝大家的時間:)

+0

是的,這或多或少是我在我的評論中建議的,但請記住,一旦你輸入'字符,它會自動轉換單元值到文本(不管內容是什麼) –