VBA Exel编译错误:应为:语句结尾由“导致”;";

VBA Exel编译错误:应为:语句结尾由“导致”;";,vba,excel,Vba,Excel,我正在尝试为以下内容创建自定义公式: 在单独的单元格中获取姓名、从属关系和电子邮件,并将它们合并到一个新单元格中作为姓名(从属关系) 我可以用这个公式直接在一个新的细胞里做这个 =A2& " ("& B2&") " & "<"&C2&">" =A2&(&B2&)&“ 其中A2、B2和C2分别是包含姓名、联系和电子邮件的单元格 但是,我不是每次都复制和粘贴此公式,而是尝试创建一个自定义公式作为捷径。但是,当我尝试在VBA中使用相同的

我正在尝试为以下内容创建自定义公式:

在单独的单元格中获取姓名、从属关系和电子邮件,并将它们合并到一个新单元格中作为姓名(从属关系)

我可以用这个公式直接在一个新的细胞里做这个

=A2& " ("& B2&") " & "<"&C2&">" 
=A2&(&B2&)&“
其中A2、B2和C2分别是包含姓名、联系和电子邮件的单元格

但是,我不是每次都复制和粘贴此公式,而是尝试创建一个自定义公式作为捷径。但是,当我尝试在VBA中使用相同的公式来创建如下新模块时:

Function Combined (name, affiliation, email)
 Combined = name&" ("&affiliation&") "&"<"&email&">"
功能组合(姓名、隶属关系、电子邮件)
合并=名称和(“&附属机构和”)&“
该程序突出显示“(”,并给出以下错误:

编译错误: 预期:声明结束

我不是一个程序员,我只是涉猎,但任何帮助将不胜感激

谢谢大家!


另外,如果我能做一个像A2:C2的范围,而不是A2,B2,C2,以达到同样的效果,那就更好了!!!!!!!短版本

在运算符及其操作数之间添加空格。问题已解决


长版本

任何紧跟着
&
的标识符,如
名称&
从属关系&
,都会被解释为
变量,因此在连接运算符前面缺少空格会导致解析错误,因为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

短版

在运算符及其操作数之间添加空格。问题已解决


长版本

任何紧跟着
&
的标识符,如
名称&
从属关系&
,都会被解释为
变量,因此在连接运算符前面缺少空格会导致解析错误,因为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

如果要将
范围
传递给函数,可以执行以下操作:

Public Function Combined(rng As Range) As Variant
    If rng.Cells.Count <> 3 Or rng.Areas.Count <> 1 Then
        Combined = cvErr(xlErrValue)
    Else
        Combined = rng.Cells(1).Value & _
                   " (" & rng.Cells(2).Value & ")" & _ 
                   " <" & rng.Cells(3).Value & ">"
    End If
End Function
组合公共功能(rng作为范围)作为变型
如果rng.Cells.Count 3或rng.Areas.Count 1,则
组合=cvErr(Xlerr值)
其他的
组合=rng.单元格(1).值和_
(“&rng.Cells(2.Value&”)和
" "
如果结束
端函数

如果放置在标准代码模块中,则可以从Excel调用该函数,例如,
=Combined(A2:C2)
如果要将
范围
传递给函数,可以执行以下操作:

Public Function Combined(rng As Range) As Variant
    If rng.Cells.Count <> 3 Or rng.Areas.Count <> 1 Then
        Combined = cvErr(xlErrValue)
    Else
        Combined = rng.Cells(1).Value & _
                   " (" & rng.Cells(2).Value & ")" & _ 
                   " <" & rng.Cells(3).Value & ">"
    End If
End Function
组合公共功能(rng作为范围)作为变型
如果rng.Cells.Count 3或rng.Areas.Count 1,则
组合=cvErr(Xlerr值)
其他的
组合=rng.单元格(1).值和_
(“&rng.Cells(2.Value&”)和
" "
如果结束
端函数

如果放置在标准代码模块中,则可以从Excel中调用该函数,例如,
=Combined(A2:C2)

或使用
Join$
并获得自由类型提示,而库存最后。实际上,不要这样做。或者使用
Join$
并获得自由类型提示,而库存最后。实际上,不要这样做。