excel - 从网站复制 Excel VBA 代码时出现意外的语法错误

标签 excel vba syntax-error non-ascii-characters excel-2016

我正在寻找一个函数来有条件地连接 Excel 中的一系列单元格。这个功能

Function ConcatenateIf(CriteriaRange As Range, Condition As Variant, ConcatenateRange As Range, Optional Separator As String = ",") As Variant

Dim xResult As String
On Error Resume Next
If CriteriaRange.Count <> ConcatenateRange.Count Then
    ConcatenateIf = CVErr(xlErrRef)
    Exit Function
End If
For i = 1 To CriteriaRange.Count
    If CriteriaRange.Cells(i).Value = Condition Then
        xResult = xResult & Separator & ConcatenateRange.cells(i).Value
    End If
For i = 1 To CriteriaRange.Count
Next i
If xResult <> "" Then
    xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1)
End If
ConcatenateIf = xResult
Exit Function

来自 https://www.extendoffice.com/documents/excel/2723-excel-concatenate-based-on-criteria.html只看了票。评论表明它对其他编码人员有效。

但是,当我将其粘贴到 Excel2016 中的 VBA 模块中时,会出现我无法弄清楚的语法错误。第7行的“Exit Function”可以通过删除“Function”来解决。最后调用“退出函数”不会注册为错误,但可以删除为多余的。但
If CriteriaRange.Cells(i).Value = Condition Then

突出显示为语法错误(以及匹配的“End If”)。如果我只是使用“If true Then”,错误不会消失,这表明查看前一行
For i = 1 To CriteriaRange.Count

我尝试了“For i = 1 To 8”,但这也不能解决问题。我就是看不出有什么问题?

除了有用的回复,这里是直接粘贴到 VBA 的屏幕截图

shows red syntax error highlights in original code from site

这是在 Word 中看到的“狡猾”空格字符的屏幕截图

shows spaces-as-circles with Hidden Chars on in Word

最佳答案

编辑 2

正如 OP 发现的那样,从网站复制和粘贴会产生一堆不间断的空格:

enter image description here

在我的测试用例(Excel 2013、Win7)上,粘贴得很好,而且 Excel 不会出错。但是,OP 的安装(Excel 2016)无法处理它们。

要更改这些:

  • 将代码粘贴到 Word 中。
  • 执行查找/替换以更改 ^s (不间断空格,ChrW(160))到单个空格()。
  • 从 Word 复制到 Excel。

  • 原来的

    我所要做的就是编译它:
  • 注释掉第二个For i=...线
  • 更改Exit Function在最后一行到 End Function .

  • 不过还没有测试过。您能否编辑您的问题以添加您正在尝试的测试用例?

    编辑 @YowE3K 打败了我——你的问题的代码中有一些复制和粘贴错误。从网站上复制,你应该没问题!

    关于excel - 从网站复制 Excel VBA 代码时出现意外的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44924847/

    相关文章:

    xml - 使用 XSLT 从 XML 中写入数据列与 Excel 中的行

    excel - SSAS 2005、Excel 2007、参差不齐的层次结构

    function - JSP错误: The method is not applicable for the arguments

    excel - 垂直和水平过滤的最佳方法?

    java - 文件已以错误的编码加载:android studio中的 'UTF-8'

    mysql - MySQL 创建函数中的语法错误

    excel - 如何提示用户在 VBA 中选择文件位置以将文件合并到一个工作簿中

    java - 如何使用Java在Excel中输入无效的公式

    excel - 使用 vba 将图像加载到用户表单中的标签

    Excel VBA MSXML2.XMLHTTP60 PUT 请求在 "send"操作失败