我开始编写一个简单的函数来确定字符串的长度。谷歌搜索后,我决定通过让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。 没有结果。
我怀疑我错过了一些显而易见的事情,但此刻我还是打败了。
欢迎任何和所有建议。
答案 0 :(得分:0)
所以,@ YowE3K是对的。在修复原始代码中的错误(上面的更正代码)之后,从vba运行正常。我知道我错过了一些明显的东西。
好奇心子问题:该功能按照需要工作,实际上,正如@ YowE3K所观察到的,它不会修改Excel环境。但是,返回的结果取决于显示以修改Excel环境。严重的WTF。只是想了解。
再次感谢YoWE3K。