2016-03-03 81 views
0

文本後添加日期有細胞B8當前格式化爲貨幣格式,在紙張,我們可以簡單的叫工作表Sheet1。我相信這是我需要在VBA中完成的事情,但是如何讓Excel將以下內容添加到單元格B8的末尾:我如何在細胞

as of 'MM/DD/YY'其中日期是今天(不關心,如果例如,如果我在VBA進入今天的日期之後保存工作簿,並且如果我明天重新打開,它可以顯示原始日期或新日期 - 沒有區別,因爲它會保存在一個不可編輯格式)

考慮

從而使細胞被格式化爲貨幣格式(順便說一句不包括小數),通過我輸入數字,例如「」,細胞應顯示以下:

$10,000 as of 03/03/16 

有什麼建議嗎?

+0

嘗試在應用「自定義」格式的地方錄製一個宏。 –

+0

如果你可以使用輔助單元,如果A1中的「10000」和日期B1中,你可以在C1:'= Text(A1,「$#,## 0.00」)&「of」 &文本(B1,「mm/dd/yy」)' – BruceWayne

回答

2

可以保留輸入到B8,同時顯示在貨幣符號和小數以及所述「作爲MM/DD/YY」的原始數值部,但日期只會顯示。

複製此代碼並將其粘貼到工作表的代碼表中(右鍵單擊ws名稱選項卡,查看代碼)。

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Target, Range("B8")) Is Nothing Then 
     On Error GoTo bm_Safe_Exit 
     Application.EnableEvents = False 
     Dim str As String 
     str = Range("B8").NumberFormat 
     If CBool(InStr(1, str, "\a\s of", vbTextCompare)) Then _ 
      ThisWorkbook.DeleteNumberFormat NumberFormat:=str 
     str = Format(Date, " \a\s of dd-mmm-yyyy") 
     str = StrConv(str, vbUnicode) 
     str = Join(Split(str, vbNullChar), Chr(92)) 
     str = Left(str, Len(str) - 1) 
     str = "$#,##0" & str & ";[Red]($#,##0)" & str 
     Range("B8").NumberFormat = str 
     'Debug.Print str 
    End If 

bm_Safe_Exit: 
    Application.EnableEvents = True 
End Sub 

你不會建立一些無用的自定義數字格式,因爲每個分配一個新的人之前刪除;即使它是一樣的。 B8單元格中的值仍可用於計算和比較。

cnf_as_of

注單元格中的數字一樣,右對齊。如果該欄不夠寬,無法顯示整個街區,則最終會以########結束。

1

選擇任何單元格並使用這樣的宏將數字格式應用到今天的日期。這種格式是靜態的,不會改變(除非你重新運行宏)。

我得出這個從錄製的宏,在這裏我用了一個「自定義」格式,並採用一個簡單的字符串到它,像這樣:

enter image description here

這給了我喜歡的一些基本代碼:

Selection.NumberFormat = "$#,##0_)"" foo"";[Red]($#,##0)"" foo""" 

請注意雙引號。有時候這部分有點棘手。然後修改它對於這個標準:

Sub Macro2() 
' 
' Macro2 Macro 
Dim dt As String 
dt = """ as of " & Format(Now(), "[$-409]mmmm d, yyyy;@") & """" 

    Selection.NumberFormat = _ 
     "$#,##0_)" & dt & ";[Red]($#,##0)" & dt 
End Sub 
+0

我確實得到了這個工作 - 但是,有沒有辦法在我在該字段中輸入數字時自動填充?或者,如果該字段必須是空白的,它甚至可以在那裏。在另一個項目中,我使用了一個VBA腳本,它可以在輸入單元格時立即將輸入到特定單元格中的文本複製到標籤頁/表單名稱中。代碼: 'Private Sub Workbook_SheetChange(ByVal Sh As Object,ByVal Target As Range) If Target.Address(0,0)=「F6」Then Sh.Name = Sh.Range(「F6」) .Value End If End Sub' 編輯:顯然評論不允許換行。對不起,亂碼。 –

+0

在您的Worksheet_Activate過程中,只需添加一個語句,如「調用Macro2」來調用其他過程(如果需要,修改宏名稱) –

+0

糟糕,或您的'Worksheet_Change'事件。基本上你只需要按需調用這個過程,當然你也可以從宏菜單或者像Worksheet_Change這樣的內置的事件過程手動完成。此外,它可以進行修改,只需要在特定的單元格範圍內操作等。 –