将字符串输出到单元格时出错

将字符串输出到单元格时出错

我正在使用 vba 宏来自动化 excel 电子表格的一部分。以下行不断给我一个运行时错误 1004# 应用程序或对象定义错误

Sheets("Material").Last.Offset(0, 1).Value = "=SUMIF(MainTable[0],AG12,MainTable[Cost])"

通过观察,我知道等式的左边引用了正确的单元格。我假设错误在于写入单元格的右侧字符串中 - 我想可能是我的表格引用?其余公式作为字符串都写得很好,不包含表格引用。

答案1

我认为错误出在代码中,因为当我收到运行时错误时,没有输出到给定的单元格。如果将公式写入单元格,则会出现问题,它会生成弹出窗口,提示“我们发现此公式存在问题...”。与 #NAME?、#VALUE!、#N/A 类型的错误不同。在我的例子中,我的代码将一个范围设置为一个名为 MainTable 的表,其中一个列标题是 Effective Cost。代码将公式设置为引用 MainTable[Cost] 的字符串,而 MainTable[Effective Cost] 应该是 MainTable[Effective Cost]。

vba 将生成运行时错误,子程序将停止,问题字符串永远不会输出到单元格。以下代码将停止子程序。(额外的“(”将导致弹出窗口公式错误)

Range("A1").Value = "=Sum((B2:B4)"

尽管单元格 A1 中出现了 #NAME? 错误,但以下代码仍能顺利运行。

Range("A1").Value = "=Sum(PotatoSalad)"

我还用字符串数组做了一个快速测试。将公式存储到数组中的字符串中似乎可以避免代码中断的问题,因为公式在刷新之前不会进行评估。这个问题进一步详细讨论了使用数组将公式转储到单元格中时会发生什么 - 长话短说,使用变体数组将导致公式进行评估并停止子操作。https://stackoverflow.com/questions/19238844/strange-behavior-when-assigning-a-vba-array-to-formulas-of-an-excel-range

以下代码将一直有效,直到单元格 A1 被强制重新计算。

Dim MyArray(0 to 0) as String MyArray(0) = "=Sum((B2:B4)" Range("A1").Value = MyArray()

将相同的数组作为变体传递将产生运行时错误。

相关内容