我正在尝试为以下内容创建自定义公式:
在单独的单元格中使用名称,附属和电子邮件,并将它们组合在一个新单元格中作为名称(附属).
我可以使用公式直接进入新单元格
=A2& " ("& B2&") " & "<"&C2&">"
Run Code Online (Sandbox Code Playgroud)
其中A2,B2和C2分别是包含Name,Affiliation和Email的单元格.
但是,我不是每次都复制和粘贴这个公式,而是试图创建一个自定义公式作为捷径.但是,当我尝试在VBA中使用相同的公式来创建这样的新模块时:
Function Combined (name, affiliation, email)
Combined = name&" ("&affiliation&") "&"<"&email&">"
Run Code Online (Sandbox Code Playgroud)
该程序突出显示"(",它给我以下错误:
编译错误:预期:结束语句
我不是编码员,我只是涉猎,但任何帮助将不胜感激.
谢谢!
PS如果我可以做一个像A2:C2而不是A2,B2,C2这样的范围,效果相同,那就更好!!!!!!
精简版
在运算符及其操作数之间添加空格.问题解决了.
长版
任何紧跟a &,like name&和的标识符都affiliation&被解释为Long变量,因此在连接运算符之间缺少空格会导致解析错误,因为VBA不知道哪个文字表达式可能跟随Combined = name&赋值 - 指令完整; 应该在哪里的唯一标记" ("是语句结束标记:
预期:声明结束
说的确如此.之前的所有内容都是" ("完全有效的指令,除非它没有终止.
所以它不是" (",它是类型提示.插入空格以将运算符与操作数分开,您将解决问题.更明确也不会伤害:
Option Explicit
Public Function Combined(ByVal name As String, ByVal affiliation As String, email As String) As String
Combined = name & " (" & affiliation & ") " & "<" & email & ">"
End Function
Run Code Online (Sandbox Code Playgroud)
如果未指定类型,则隐式声明Variant,这会产生一些不必要的运行时开销.
如果ByVal未指定,则ByRef默认传递参数,这意味着函数可以分配给参数.
你也可以像这样实现这个功能:
Combined = Join(Array(name, "(" & affiliation & ")", "<" & email & ">"), " ")
Run Code Online (Sandbox Code Playgroud)