我创建了这个函数,它可以将值放入单元格,但它不能设置.NumberFormat属性。
Public Function NewYears(year As Integer)
'Determine the cell that called the function
Dim rng As range
Set rng = ThisWorkbook.Sheets("How-To").range(Application.Caller.Address)
MsgBox rng.Address
fxFormat = "[$" & holidayName & "]"
NewYears = DateSerial(year, 1, 1)
rng.NumberFormat = fxFormat
End Function
更新更多信息:
我将使用返回日期的= NewYears()等函数。
我会为任意数量的假期做这件事。我想格式化仍然存储日期的字段,但.NumberFormat属性具有假日的名称
所以= NewYears()将返回“01/01/2014”,但在表格中它将显示为“新年”
答案 0 :(得分:0)
函数只能返回值或操作注释,它们不能直接修改格式。
答案 1 :(得分:0)
使用Worksheet_Change
事件:
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Interior.ColorIndex = 39
Target.NumberFormat = "mm/dd/yyyy"
End Sub
将此代码放在Sheets("How-To")
代码模块中。修改为要格式化的颜色/等。
当您最初在单元格中输入函数时,它将触发更改事件,并且此子例程将执行。
Per Gary的评论(如下),重新计算现有公式不会触发此事件。
答案 2 :(得分:0)
您的工作表/书中有多少计算?
特定排列列中的单元格还是处处或随机?
如果对第一个问题回答是“是”,我不建议使用易失性函数触发器,没有人应该这样做。你接下来做的事情取决于第二个问题的答案。
为什么不尝试“条件格式化”,虽然它可能有点贵。否则,如果年份单元格应该在有组织的列或单元格中,请确保其格式是现成的....如果这些都不适用,您可以给我们一个更好的图片,如果您的工作表的结构/设计... < / p>