【发布时间】:2023-02-17 09:47:51
【问题描述】:
我正在创建一个电子表格应用程序,用于为我的团队自动生成电子邮件内容。并非每个人都使用相同的电子邮件客户端,因此目标是将数据写入 Microsoft 剪贴板以便于粘贴。
为了保留格式,我创建了一个表格,其中包含要连接并写入剪贴板的各种文本块。我有四个电子邮件模板,除一个模板外,其他一切正常。
这是一段代码:
If EmailTemplate = "How-To" Then
EmailSub = "OAS: How-To Guide"
EmailCode1 = Evaluate("VLookup(Email_Type,EmailBodies,2,False)")
RepEmail = Evaluate("VLookup(Email_Type, EmailBodies, 3, False)")
EmailCode2 = Evaluate("VLookup(Email_Type, EmailBodies, 4, False)")
RepCalendar = Evaluate("VLookup(Email_Type, EmailBodies, 5, False)")
EmailCode3 = Evaluate("VLookup(Email_Type, EmailBodies, 6, False)")
ElseIf EmailTemplate = "PQW" Then
EmailSub = "When You Are Ready, Please Tell Us About Your Project Requirements"
EmailCode1 = Evaluate("VLookup(Email_Type,EmailBodies,2,False)")
RepEmail = Evaluate("VLookup(Email_Type, EmailBodies, 3, False)")
EmailCode2 = Evaluate("VLookup(Email_Type, EmailBodies, 4, False)")
RepCalendar = Evaluate("VLookup(Email_Type, EmailBodies, 5, False)")
EmailCode3 = Evaluate("VLookup(Email_Type, EmailBodies, 6, False)")
我正在使用 Vlookup 函数引用一个表。
第一个条件 EmailTemplate = "How-To" 有效,但是对于“PQW”我在分配变量 EmailCode1 时收到类型不匹配错误。
对于“操作方法”,单元格中的文本是:
感谢您对 Open Automation Software 的关注。请参阅下面的链接以获取有关完成指定要求的指导:
对于“PQW”,它是:
请告诉我们更多关于您的项目要求。通过填写此工作表,我们可以更轻松地帮助您集中精力评估对您重要的软件部分。
请花几分钟时间填写并发回邮件至
两者都包含换行符并且都只包含文本。您在代码中看到的所有变量都是字符串数据类型。
我努力了:
【问题讨论】:
-
我的猜测是
Vlookup找不到匹配项。 -
尝试使用
Application.WorksheetFunction.VLookup而不是评估字符串;这将抛出一个可捕获的运行时错误,而不是返回一个Variant/Error和#N/A错误结果。任何可能返回Variant/Error的东西都不应分配给Variant以外的任何东西;那么你可以使用If IsError(theReturnedVariant)来处理#N/A。或者,您可以使用后期绑定Application.VLookup来做同样的事情——无论哪种方式,Evaluate都不合适。 -
是否声明了这些变量?有类型吗?
-
该错误意味着 Vlookup 没有找到匹配项。见this。
-
@MathieuGuindon 就是这样!我在电子表格中通过名称引用了一个表,但没有明确地将其定义为宏中的范围对象。感谢您的帮助!
标签: excel vba vlookup type-mismatch