gpt4 book ai didi

excel - VBA:我的程序在格式上抛出编译错误

转载 作者:行者123 更新时间:2023-12-02 10:44:23 25 4
gpt4 key购买 nike

所以我正在使用我的程序。它可以工作并运行,所以我复制了它并制作了第二个版本,我可以添加额外的功能,同时仍然有一个工作程序。我没有看到我的新代码有任何问题,所以我准备逐步完成它。突然间,在我的其他版本中运行良好的东西会引发编译错误。具体如下。

Dim elapsedTime As String
Dim startTime As Date
startTime = Now()
'code
elapsedTime = Format(Now() - startTime, "h:m:s")

我一次又一次地检查,但这个完全相同的代码在我的另一个文件中工作正常。在此文件中,它突出显示“格式”并引发以下编译错误。
Compile Error: arguments or property

有谁知道为什么excel会对此感到如此沮丧?如果有编译错误,我什至应该看看它突出显示的地方吗?

最佳答案

你有一个名为 Format 的东西范围内的某处(即,可从调用 Format 函数的位置访问),以及 Format事情正在掩盖Format你要调用的函数。

YowE3K suggested如果你右击 Format调用并选择“定义”(或 Shift+F2),这将带您进入阴影声明。

从那里你有几个选择:

  • 重命名Format标识符 [可能会破坏代码中的大量内容]
  • 完全限定 Format电话,即VBA.Strings.Format , 或只是 Strings.Format , 甚至 VBA.Format .

  • 我的建议是完全限定该调用,然后尝试再次编译,并完全限定导致相同编译错误的任何/所有调用。然后重命名任何名为 Format 的内容, 这样它就不再隐藏 VBA 标准库中的函数。

    如果您使用 Rubberduck (我管理的一个开源VBIDE插件项目),您可以轻松找到阴影标识符的所有引用:

    Rubberduck toolbar showing all references

    Rubberduck 工具栏会告诉您何时 Format指的是正确的功能:

    Rubberduck toolbar showing VBA.Strings.Format

    您也可以轻松地找到所有对它的引用,无论它们是否合格 - 因此无论它们在哪里,都可以轻松地对其进行完全限定。

    Rubberduck 还可以轻松地重构/重命名函数,以搜索/替换失败的方式:

    "Format" function renamed to "Renamed", VBA.Strings.Format call remained unchanged

    巧合的是,目前正在进行一项新的代码检查,专门用于定位像这样的阴影标识符。

    至于 ByRef参数类型不匹配,您的屏幕截图似乎与您发布的代码不匹配,所以一切皆有可能,但除非 eqnMakeEqn 的正文中分配函数(它应该返回,而不是赋值),那么就不需要传递它 ByRef (隐式或显式)- 可以通过 ByVal (Rubberduck 为您提供了一个检查结果 - 另一个用于隐式返回类型,另一个用于两个过程的隐式 Public 访问修饰符,还有其他几个用于您发布的代码中的其他问题)。

    关于excel - VBA:我的程序在格式上抛出编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46593912/

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