VBA excel ByRef参数类型不匹配
Excel中的VBA-我正在尝试向子系统发送自定义数据类型,如下所示:VBA excel ByRef参数类型不匹配,vba,excel,Vba,Excel,Excel中的VBA-我正在尝试向子系统发送自定义数据类型,如下所示: Public Type emailBody emailAddress As String End Type Sub SendEmail(email As emailBody) Dim queryString as String queryString = "email=" & email.emailAddress 'email sending code goes here End Sub 在
Public Type emailBody
emailAddress As String
End Type
Sub SendEmail(email As emailBody)
Dim queryString as String
queryString = "email=" & email.emailAddress
'email sending code goes here
End Sub
在我的行动中:
Private Type emailBody
emailAddress As String
End Type
Private Sub sendemail_Click()
Dim emailFields as emailBody
Dim emailAddress As String
emailFields.emailAddress = "myemail@example.com"
Call SendEmail(emailFields)
End Sub
我得到这个错误:
ByRef argument type mismatch
在这一行:
Call SendEmail(emailFields)
来自javascript和PHP背景,因此不确定是什么触发了此错误或我遗漏了什么。我认为如果
emailAddress
只是一个字符串,就使用string
作为类型。所以Sub-sendmail(电子邮件为字符串)
,然后queryString=“email=“&email
就足够了。也许可以使用“作为新邮件正文”?emailFields应该是不正确的now@Pierre用户定义的类型不是对象,您不能新建它们。@M.Doerner true,但不能使用显式调用(错误是“编译错误:需要变量-无法分配给此表达式”)-OP的代码在我的机器上正常工作:-/@Mat'sMug EmailBody()被宣布两次。删除专用声明解决了此错误。为什么这会导致ByRef错误,而不是某种类型的重复定义错误……对我来说是个谜。我认为如果emailAddress
只是一个字符串,就使用string
作为类型。所以Sub-sendmail(电子邮件为字符串)
,然后queryString=“email=“&email
就足够了。也许可以使用“作为新邮件正文”?emailFields应该是不正确的now@Pierre用户定义的类型不是对象,您不能新建它们。@M.Doerner true,但不能使用显式调用(错误是“编译错误:需要变量-无法分配给此表达式”)-OP的代码在我的机器上正常工作:-/@Mat'sMug EmailBody()被宣布两次。删除专用声明解决了此错误。为什么这会导致ByRef错误,而不是某种类型的重复定义错误……对我来说是个谜。