Excel VBA函数在完成之前停止执行而不显示错误消息

时间:2017-12-01 22:39:08

标签: excel-vba vba excel

我开始编写一个简单的函数来确定字符串的长度。谷歌搜索后,我决定通过让excel为我做这项工作来避免字体指标问题。

这是代码。

Option Explicit    
Function txtWidthPts(MyText As String) As Integer
    'A cell on a working worksheet has been named "WidthTest" for easy reference & to ensure data is not overwritten.
    'set WidthTest word wrapping off so that strings placed in there aren't wrapped

    Application.ScreenUpdating = False

    With [WidthTest]
        .WrapText = False
        .Value = MyText
'autofit WidthTest
        .Columns.AutoFit
'get the width of the column
        txtWidthPts = .Width
        .ClearContents
    End With

End Function

我通过将函数放在工作工作表的单元格中来测试该函数,从而:     = txtWidthPts(" Test123&#34) 当我有这个工作时,我将在代码中使用它而不是工作表函数。

我的问题是该函数不会抛出错误并停止执行该行:

.Value = MyText

我已将代码和名称放入空白工作簿中,以确保不与其他工作簿内容/代码进行交互。 我已经广泛搜索并尝试了各种建议(DoEvents,Application.Update = False等等)没有结果。 我已经清除了所有断点,关闭并打开了工作簿&重新启动。我已经测试了选项设置为Break on All Errors。 没有结果。

我怀疑我错过了一些显而易见的事情,但此刻我还是打败了。

欢迎任何和所有建议。

1 个答案:

答案 0 :(得分:0)

所以,@ YowE3K是对的。在修复原始代码中的错误(上面的更正代码)之后,从vba运行正常。我知道我错过了一些明显的东西。

好奇心子问题:该功能按照需要工作,实际上,正如@ YowE3K所观察到的,它不会修改Excel环境。但是,返回的结果取决于显示以修改Excel环境。严重的WTF。只是想了解。

再次感谢YoWE3K。