VBA Excel函数设置调用Cell.NumberFormat属性
我创建了这个函数,它可以将值放入单元格,但是设置.NumberFormat属性不起作用VBA Excel函数设置调用Cell.NumberFormat属性,excel,vba,number-formatting,Excel,Vba,Number Formatting,我创建了这个函数,它可以将值放入单元格,但是设置.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.A
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属性有假日的名称
So=NewYears()将返回“01/01/2014”,但在工作表中它将显示为“NewYears”函数只能返回值或操作注释,不能直接修改格式。使用
工作表\u Change
事件:
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Interior.ColorIndex = 39
Target.NumberFormat = "mm/dd/yyyy"
End Sub
将此代码放入工作表(“如何”)
代码模块。修改为要格式化的任何颜色/等
当您最初在单元格中输入函数时,它将触发更改事件并执行此子例程
根据Gary的评论(如下),重新计算现有公式不会触发此事件
你为什么不试试“条件格式”呢?虽然它可能有点贵。否则,如果年份单元格应位于有组织的列或单元格中,请确保其格式已准备就绪。。。。如果这些都不适用,如果您的工作表的结构/设计…我可以说,调用另一个具有范围的Sub,Sub可以操纵它吗?当然我会尝试一下,你可以调用sub来格式化单元格,但不能从UDF中调用。使用sub来格式化单元格。直接运行子函数,而不是从函数内部调用。有关此UDF限制的一个相当难看的解决方法,请参阅。我不相信函数计算会触发功\u更改,您需要一个计算事件宏来完成此操作。啊,我认为您是对的。我只是通过在单元格中输入函数来测试它,这当然会触发更改。在这种情况下,输入函数将首先设置数字格式。不确定这是否需要根据OP进行更改,但您@Gary's Student的评论非常好。我在我的原始帖子中添加了额外的信息-我认为有条件的会很困难,因为我的假期日期可能会经常更改(原因我无法很快解释)Kairan这绝对不是关于图纸设计/结构的信息。通常人们知道如何调用
UDF
…;-)