gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:27:33 26 4
gpt4 key购买 nike

我正在寻找一个函数来有条件地连接 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/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com