Vba左功能不起作用

时间:2015-05-28 08:02:25

标签: vba scripting

我正在尝试删除字符串的最后一个字符,因为我用一个循环填充字符串,在添加每个新字符串后自动添加“,”,如:

Do Until EOF(1)
    ...
    (get string)
    ...
    Ref = Ref + String
    Ref = Ref + ","
Loop
Ref = Left(Ref, Len(Ref) - 1)            (Delete last "," of ref)

当试图运行它时,我在LEFT函数上得到“错误数量的参数或无效的属性赋值”错误。

我试图研究这个错误,但我唯一能找到的是关于工具 - 参考文献缺失,而他们不是(据我所知)。 我发现的线程都是针对excel的vba而不是这里的情况,这是在反射工作区中运行的脚本的代码。

还有另一种删除字符串最后一个字符的方法吗?或者有什么错误可以保证这个错误吗?我似乎无法弄清楚这一点。

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

不是做错事然后试图撤消它,为什么不首先防止错误呢?

发现循环的第一次运行要比上一次容易得多:

Dim first as Boolean
first = True
Do Until EOF(1)
  ...
  (get string)
  ...
  If first Then
    first = False
  Else
    Ref = Ref + ","
  End If
  Ref = Ref + String
Loop

答案 1 :(得分:1)

不确定为什么你的left函数不起作用,这是正确的语法,假设Ref实际上是一个字符串。我怀疑你没有提供真实代码这一事实隐藏了我们的理由。

请注意,该错误消息中有两个子句:

  

参数数量 OR 参数无效。

This page详细说明了可能的原因。

在任何情况下,做一些类似于你自己的伪代码更容易:

sep = ""
ref = ""
do until eof(1)
    string = getString()
    ref = ref + sep + string
    sep = ","
loop

换句话说,事先创建正确的字符串,而不是之后尝试修复它。