vba - 使用 VBA 更改 Excel 表单标签长度以匹配其文本的长度

标签 vba excel

如何获取工作表上的 Excel 表单控件标签以更改其长度以匹配其标题中字符串的长度。重要的是,它必须与查看文件的屏幕或工作表上的缩放设置无关。

到目前为止,我有:

Sub LabelLength()

Dim XYLabel As Shape
Dim XYDataSheet As Worksheet

Set XYDataSheet = ThisWorkbook.Sheets(1)
Set XYLabel = XYDataSheet.Shapes(1) 'This is the Forms Label

XYLabel.OLEFormat.Object.Caption = Trim(XYDataSheet.Cells(1, 1).Value)
XYLabel.Width = Len(Trim(XYDataSheet.Cells(1, 1).Value)) * 7.5


End Sub

哪个有效,但在一些字幕之后确实留下了相当多的空间。

最佳答案

我认为这不能用表单控件来完成,至少不能直接完成。如果您想坚持使用 Form 控件,我认为您在正确的轨道上,可以根据文本大小缩放其 .width 属性。为了做得更好,您可能必须构建一个字典对象或其他东西,并根据您在字典对象中列出的宽度对字符串中所有字符的宽度求和。

但是,如果您可以将标签切换到 ActiveX 控件,则可以使用以下方法解决此问题:

.WordWrap = False
.AutoSize = True

我认为人们通常更喜欢使用表单控件,因为它们更简单一些。但我也认为,总的来说,ActiveX 控件具有更大的灵 active ,您可以根据自己的需要更多地自定义它们。您可以阅读更多有关表单控件与 ActiveX 控件的信息 here .

关于vba - 使用 VBA 更改 Excel 表单标签长度以匹配其文本的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50953085/

相关文章:

excel - "Fuzzy Lookup"添加结果

excel - 从文本和文本单元格中提取数字

VBA函数能够搜索单元格吗?

c# - 不使用 OLEDB 在 c# 中显示所有 Excel 单元格值

excel - 加载图像以适合合并的单元格

vba - 总是打印出特定字符串后面的 6 位数字

vba - 验证 ParamArray 包含正确类型的参数

vba - 获取 InternetExplorer 对象的 ReadyState 时出现自动化错误

vba - 需要帮助更正嵌套在循环中的子例程中的 'with' 语句

c# - 如何确定 Excel 工作簿中有多少个工作表?