【问题标题】:VBA String without a space doesnt work, with a space does work没有空格的 VBA 字符串不工作,带空格的工作
【发布时间】:2017-01-06 22:53:17
【问题描述】:

我正在使用 Excel 中的 VBA,我一生都无法弄清楚为什么会弹出此错误。

以下代码有效:

Cells(1, 1) = " =if(counta( " & aLoc & "Subbies'!$A$2:$A$20>0 ""YES"", ""NO"" "

以下代码不起作用:

Cells(1, 1) = "=if(counta( " & aLoc & "Subbies'!$A$2:$A$20>0 ""YES"", ""NO"" "

因此,只需删除空格以使代码行插入公式而不是字符串,就会导致编译器通过错误 1004。

在我使用的其他行中,它会插入一个公式没问题,但是将文本与局部变量连接起来似乎会抛出这个问题。有什么想法吗?

【问题讨论】:

  • 是因为公式不全。你错过了你所有的),所以excel不能把它放进去,因为它是一个糟糕的公式。
  • 我真的不在乎这个公式现在是否有效(我现在只是在乱搞)但错误不在 excel 中,它在代码中,即编译器不允许插入字符串,即使它是错误的。应该是excel错误,不是VBA错误
  • 我应该澄清一下;当我开始这一切时,公式就完成了,然后开始删除一些东西,看看是不是那些字符抛出了错误,直到我发现它是 = 符号触摸了 " 没有空格。
  • 这是正确的,编译器不允许输入不正确的公式。如果您尝试将其直接输入到 excel 中,则会发生错误 vba is throwing that error.
  • Cells(1, 1) = "=if(counta('" & aLoc & "Subbies'!$A$2:$A$20)>0, ""YES"", ""NO"" )"

标签: vba excel


【解决方案1】:

Excel 不允许输入错误的公式。

将公式直接放入工作表时,如果公式不正确并且单元格保持编辑模式直到被删除或修复,则会出现错误。

1004 错误只是表示该错误的 vba。

为了帮助找到公式中的错误,请将您的字符串放在一个变量中,然后调试。打印它以查看不正确的地方:

t = "=if(counta('" & aLoc & "Subbies'!$A$2:$A$20)>0, ""YES"", ""NO"" )"
Debug.Print t 

这会将公式放在即时窗口中,就像在 excel 中一样,允许开发人员检查是否有错误。

底线:

你可以在一个单元格中放一个你想要的字符串,但是如果你想放一个公式,它必须是完整和准确的。

【讨论】:

    【解决方案2】:

    Excel 抱怨您试图在单元格中输入错误的公式。如果你想在一个单元格中放置一个“公式作为文本”,那么:

    Sub DontQuoteMe()
        Cells(1, 1) = "'=if(counta( " & aLoc & "Subbies'!$A$2:$A$20>0 ""YES"", ""NO"" "
    End Sub
    

    (使用空格完成同样的事情)

    【讨论】:

      猜你喜欢
      • 2021-04-05
      • 2015-04-04
      • 1970-01-01
      • 2016-07-26
      • 2013-04-10
      • 1970-01-01
      • 2021-02-06
      • 1970-01-01
      • 2011-11-12
      相关资源
      最近更新 更多