Excel 为什么可以';单字母UDF名称不能使用C或R吗?

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作为函数调用的方法都可以解析为函数调用,因为它们后面紧

我可以编写以下有效的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
作为函数调用的方法都可以解析为函数调用,因为它们后面紧跟着一个
),而任何使用
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)