2013-03-26 62 views
0

我有一列非易失性時間函數BNOW()已在不同時間手動輸入。 說得簡單,比方說,在山坳如何將NOW()函數生成的時間戳更改爲特定時間段後的日期

A1=BNOW()  it's value=3/25/2013 10:00:23 

A2=BNOW()  it's value=3/25/2013 10:03:09 

我想A1和A2的值改爲日期止(即2013年3月25日),10分鐘各的原始時間戳之後。我應該如何在VBA中編碼?

我想要讓Excel使用BNOW()監視每個單元格,並自動將值更改爲每個時間值後10分鐘的日期。

PS:BNOW()是Excel NOW()的非易失性用戶定義函數。

+0

對我的答案有任何反饋? – 2013-03-26 15:58:24

回答

0

您可以在工作表中使用Application.Ontime更改事件以調用將更改單元格的子對象:

Private Sub Worksheet_Change(ByVal Target As Range) 

If Target.Cells.Count = 1 Then 

    If Target.Formula = "=NOW()" Then 
     Application.OnTime Now() + TimeValue("00:00:02"), "'DoIt """ & Target.Parent.Name & "!" & Target.Address & """'" 
    End If 

End If 

End Sub 

更改單元格可以看起來像這樣子:

Public Sub DoIt(t As String) 

Application.EnableEvents = False 
Range(t).NumberFormat = "General" 
Range(t).Value = Format(Range(t).Value, "m/dd/yyyy") 
Application.EnableEvents = True 

End Sub 

這一分必須在代碼模塊,該表的類模塊不在家。另外,由於通過Application.Ontime調用子參數的限制,我認爲圖紙名稱不能包含空格。

+0

謝謝@ aardvark123我不知道可以將參數傳遞給由Application.OnTime調用的子。 – visualPaul 2013-03-28 07:43:30

0

您可以使用VBA NumberFormat屬性做到這一點:

cell.NumberFormat="dd/mm/yy;@" 

這是不會改變的價值,只是它呈現爲文本的方式。

此外,您可以將值更改爲文本字符串:

activecell.Value=day(activecell) & "/" & month(activecell) & "/" & year(activecell) 

,但最好的選擇是使用Excel格式/條件格式做

希望這有助於

菲利普

+0

對不起,我想讓Excel使用BNOW()監視每個單元格,並自動將值更改爲每個時間值後10分鐘的日期。 – visualPaul 2013-03-26 18:55:21

+0

這不是一個好主意,但也許你可以使用Timer控件或庫,並讓它持續運行。 – 2013-03-27 10:53:45

相關問題