提问人:GLNebiacolombo 提问时间:2/9/2023 更新时间:2/9/2023 访问量:64
VBA Excel 函数,用于字符串宽度(以像素为单位)
VBA Excel function for string width in pixel
问:
我的问题很简单。我有一个包含任何值的单元格,我必须计算拟合柱的宽度。 经典的 VB(或泛型窗口)解决方案使用 win32 和 GDI 库来提取图形上下文(请参阅 stackoverflow 中的“vb 宏字符串宽度(以像素为单位)”)。 我认为在 VBA excel 项目上使用它太复杂了。 我的要求是仅使用 VBA Excel 的元素,以保证简单性和与将来的 Excel 更改的兼容性。 我提出了以下解决方案,但我不知道它是否是最简单和最有效的。
Public Function GetCellWidth(curCell As Range) As Double
Dim wsT As Worksheet
Dim NewCell As Range
curCell.Copy
Set wsT = curCell.Worksheet
Set NewCell = wsT.Cells(1, wsT.Range("A1").SpecialCells(xlCellTypeLastCell).Column + 1)
NewCell.PasteSpecial (xlPasteValuesAndNumberFormats)
NewCell.WrapText = False
wsT.Columns(NewCell.Column).EntireColumn.AutoFit
GetCellWidth = wsT.Columns(NewCell.Column).Width
wsT.Columns(NewCell.Column).Delete
End Function
该解决方案使用Excel中列的自动调整功能,并创建一个新的专用列,以避免其他单元格的值修改当前的单元格长度计算。 即使它是一个函数,它也不能在公式中使用,因为它会改变单元格的内容。 用作函数将是一个很大的改进。
答: 暂无答案
评论