这是我在 Stackoverflow 上的第一篇文章。我从这个网站上的很多人那里得到了很多帮助和价值,所以我想首先感谢这个论坛上的每个人,感谢他们令人难以置信的知识和慷慨的精神。非常感激!
我对这个网站进行了广泛的研究,但找不到我的问题的答案:我在 LibreOffice (v4.2.4.2) 中使用STRJOIN 宏非常成功,但是在多周假期后重返工作岗位后,突然它不工作了。我的电脑被关闭并留下了,所以我很肯定什么都没有或没有人改变任何东西。自从我回来后,没有发生 OSX 更新。
当我运行宏(由Adam Spiers编写,基于 Markus O'Reilly 的工作)时,我现在收到以下错误:
- 在宏编辑器中,我得到
BASIC 运行时错误。参数不是可选的
在宏中使用这一行:
If NOT IsMissing(range) Then
- 如果我从工具 > 宏 > 运行宏运行宏,我会得到:
运行基本脚本 Standard.Module1.STRJOIN 时出现脚本框架错误。消息:参数数量错误!
OpenOffice 中也发生了同样的错误。
发生了什么/为什么宏现在不起作用?其他宏工作正常,我还创建了一个新的用户配置文件,认为这可能会有所帮助,但无济于事。
我特别担心该功能突然爆炸,因为我有一个巨大的电子表格,其中 STRJOIN 广泛出现在整个过程中,并且连接不是一个足够的替代品。
这是 Markus 和 Adam 的宏:
Function STRJOIN(range, Optional delimiter As String, _
Optional before As String, Optional after As String)
Dim row, col As Integer
Dim result, cell As String
result = ""
If IsMissing(delimiter) Then
delimiter = ","
End If
If IsMissing(before) Then
before = ""
End If
If IsMissing(after) Then
after = ""
End If
If NOT IsMissing(range) Then
If NOT IsArray(range) Then
result = before & range & after
Else
For row = LBound(range, 1) To UBound(range, 1)
For col = LBound(range, 2) To UBound(range, 2)
cell = range(row, col)
If cell <> 0 AND Len(Trim(cell)) <> 0 Then
If result <> "" Then
result = result & delimiter
End If
result = result & before & range(row, col) & after
End If
Next
Next
End If
End If
STRJOIN = result
End Function