如何在单元格中的文本之后添加date

我有一个单元格B8 ,目前使用货币格式格式化 ,我们将简单地调用Sheet1 。 我确信这是我需要在VBA中完成的事情,但是如果将Excel添加到单元格B8的末尾,会发生什么?

如果date是今天as of 'MM/DD/YY' (不关心date是否自动更新,比如在VBA进入今天的date之后如果我要保存工作簿,并且如果我明天重新打开,则可以显示原始date或新的date – 没有什么不同,因为它将以不可编辑的格式保存)

所以考虑到单元格的货币格式(不包括小数顺便说一下),我input一个数字,如“ 10000 ”,单元格应显示以下内容:

 $10,000 as of 03/03/16 

有什么build议么?

您可以在显示货币符号和小数位的同时保留inputB8的原始数值,以及“mm / dd / yy”部分,但date将仅显示。

复制此代码并将其粘贴到工作表的代码表(右键单击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 

你不会build立一些无用的自定义数字格式,因为在分配一个新的格式之前每个格式都被删除; 即使它是一样的。 B8单元格中的值仍可用于计算和比较。

cnf_as_of

请注意单元格中的数字 – 右alignment。 如果列不够宽,无法显示整个blurb,那么最后会出现########。

select任何单元格,并使用这样的macros来应用当前date的数字格式。 这种格式是静态的,不会改变(除非你重新运行macros)。

我从logging的macros中得到了这个结果,我使用了“自定义”格式,并在其中应用了一个简单的string,如下所示:

在这里输入图像说明

这给了我一些基本的代码,如:

 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