【发布时间】:2018-05-16 02:19:48
【问题描述】:
我开始编写一个简单的函数来确定字符串的长度(以点为单位)。谷歌搜索后,我决定让 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") 当我有这个工作时,我将在代码中使用它而不是作为工作表函数。
我的问题是函数没有抛出错误并停止执行就行了:
.Value = MyText
我已将代码和名称放入一个空工作簿中,以确保不会与其他工作簿内容/代码交互。 我进行了广泛的搜索并尝试了各种建议(DoEvents、Application.Update = False 等),但都没有结果。 我已清除所有断点,关闭并打开工作簿并重新启动。我已经使用设置为 Break on All Errors 的选项进行了测试。 没有结果。
我怀疑我遗漏了一些明显的东西,但它现在让我打败了。
欢迎提出任何建议。
【问题讨论】:
-
您不能使用 UDF 修改 Excel 环境,因此您需要从 VBA 中测试此功能。只需从即时窗口运行它,例如
?txtWidthPts("Test123")。或者有一个虚拟子程序,例如Sub Test()Debug.Print txtWidthPts("Test123")End Sub。