Excel 为什么可以';单字母UDF名称不能使用C或R吗?
我可以编写以下有效的VBA函数:Excel 为什么可以';单字母UDF名称不能使用C或R吗?,excel,excel-formula,user-defined-functions,excel-r1c1-notation,vba,Excel,Excel Formula,User Defined Functions,Excel R1c1 Notation,Vba,我可以编写以下有效的VBA函数: Public Function C() As Long C = 5 End Function Public Function R() As Long R = 6 End Function 但如果不使用VBA项目或模块名称来限定它们,我就不能在Excel公式中使用它们 FWIW、函数N和函数T也有效,但它们与内置函数冲突 我认为C和R必须是Excel公式中的保留名称,但我不明白为什么。任何使用C/R作为函数调用的方法都可以解析为函数调用,因为它们后面紧
Public Function C() As Long
C = 5
End Function
Public Function R() As Long
R = 6
End Function
但如果不使用VBA项目或模块名称来限定它们,我就不能在Excel公式中使用它们
FWIW、函数N
和函数T
也有效,但它们与内置函数冲突
我认为C
和R
必须是Excel公式中的保留名称,但我不明白为什么。任何使用C
/R
作为函数调用的方法都可以解析为函数调用,因为它们后面紧跟着一个(
),而任何使用C
/R
作为R1C1符号的方法都不会紧跟着一个(
)
有趣的是,如果我用项目和/或模块的名称限定函数调用,我可以调用函数:
=VBAProject.C()
5
=Module1.C()
5
=VBAProject.Module1.C()
5
从:
提示:不能使用大小写字符“C”、“C”,
“R”或“R”作为定义名称,因为它们都用作
用于为当前选定的行或列选择行或列的缩写
当您在名称或“转到”文本框中输入它们时
我知道在定义命名范围时存在这个限制。显然,它也扩展到了命名UDF(这是有意义的).在Windows 1252代码页中,有几个字符不能用作对用户定义函数的公式调用中的第一个/唯一一个字符,但当以项目名称或模块名称或两者作为前缀时,可以调用这些UDF:
'Without Project/Module prefix, these characters are
'reserved for Column/Row shorthand
=VBAProject.C()
=VBAProject.N()
'Without Project/Module prefix, these characters are
'reserved for built-in function names
=VBAProject.R()
=VBAProject.T()
'Without Project/Module prefix, these characters are
'special characters
=VBAProject.€()
=VBAProject.ˆ()
=VBAProject.˜()
=VBAProject.Ñ()
有趣的是,如果函数ini()
带有一个参数,并且省略了项目/模块名称,那么Excel会自动将公式转换为N(arg)
,这是一个完全不同的函数,并且不会调用ini(arg)