2011-05-03 100 views
5

我有一個對話框,當用戶單擊一個宏按鈕時出現。這個對話框大多填寫完畢(日期,電子郵件,製作人,網站等被填寫),所有用戶需要做的就是輸入他們的名字。問題是輸入的日期是靜態的,所以如果我輸入「3/3/11」,它會保持這種狀態直到有人改變它。VBA Excel在文本框中提供當前日期

我想知道是否有某種方式讓該文本框始終顯示當前日期(除非用戶決定因任何原因而決定更改該日期)。我試過把不同的東西放到文本框的「Value」部分(比如「getDate()」和「= Date()」),但迄今爲止還沒有成功。

謝謝

傑西Smothermon

回答

11

使用形式初始化事件,如:

Private Sub UserForm_Initialize() 
    TextBox1.Value = Format(Date, "mm/dd/yyyy") 
End Sub 
+0

我在嘗試初始化之前詢問了此問題。我想我把這些代碼放在錯誤的地方。這裏發生了什麼:用戶點擊一個宏按鈕,該按鈕打開一個用戶表單,用戶輸入任何內容並點擊「運行」按鈕。我會在用戶表單打開之前放置這些代碼嗎?如果是這樣,我得到一個運行時錯誤「424」對象需要。謝謝 – 2011-05-03 21:22:02

+0

右鍵單擊表單設計器並選擇查看代碼。把上面的代碼放在那裏。將「TextBox1」更改爲您的文本框被調用的任何內容。 – Graham 2011-05-03 21:24:54

+2

酷豆,它的工作。只是當我去「查看代碼」時,它會自動轉到「UserForm_Click()」,所以我只是將其更改爲「UserForm_Activate()」。謝謝 – 2011-05-03 21:33:59

1

最簡單的方式做,這是從與LinkedCell屬性的文本框中把你想在單元格中使用日期功能,並鏈接到該單元格。

從VBA你可以嘗試使用:

textbox.Value = Format(Date(),"mm/dd/yy") 
+0

所以你的意思是說,將它隱藏在宏按鈕後面?現在我覺得在文本框的「Value」部分輸入的任何內容都被視爲文字字符串,我會查看LinkedCell,謝謝 – 2011-05-03 21:11:55

0

你接近。在UserForm_Initialize()事件處理程序中添加以下代碼:

tbxDate.Value = Date 
+0

您會在哪裏放置代碼?用戶表單剛剛彈出,但沒有地方可以實際分配值。這只是我之前輸入的預先分配的值,以及用戶輸入的任何值。如果這不是用戶想要的,我也不想在所有值輸入後改變值。感謝您的幫助 – 2011-05-03 21:17:51

+0

在項目瀏覽器中右鍵單擊表單並打開代碼,然後在UserForm_Initialize()事件處理程序中添加代碼 – Arnoldiusss 2011-05-03 21:33:39

1

設置從代碼中的值上顯示的形式,而不是在設計timeProperties文本框。

Private Sub UserForm_Activate() 
    Me.txtDate.Value = Format(Date, "mm/dd/yy") 
End Sub 
0

這是一個更簡單的版本。在單元格要顯示的日期只需鍵入

=Today()  

格式的單元格到您想要的日期格式和鮑勃是你的叔叔。 :)

+1

這將作爲一個單元格中的公式,但問題是爲文本框,所以它需要是一個VBA功能。 – assylias 2012-03-29 22:24:21

+0

另外,= today()是一個易失性函數,這意味着引用該單元格的重新計算鏈中的任何內容也會變得不穩定。避免! – Andrew 2013-03-06 16:56:25

0

其實,它似乎並不複雜。

Sub 
    today_1() 
    ActiveCell.FormulaR1C1 = "=TODAY()" 
    ActiveCell.Value = Date 
End Sub 
+0

這並不回答原來的問題。此外,您正在設置單元格公式,然後在下一步中覆蓋它。 – arcadeprecinct 2016-06-02 07:06:52

0

我知道這是非常舊的文章,但我用這個之前

您可以隨時調整,以激活。現在方法是另一種方法。只是一個選項

Private Sub UserForm_Initialize() 

Textbox1.Text = Format(Now(), "mmddyyyhhmmss") 

End Sub