使用VBA更改Excel格式标签长度以使其文本长度匹配

时间:2018-06-20 16:32:12

标签: excel vba excel-vba

如何获取工作表上的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

这可以用,但是在加上一些字幕后确实留出了很大的空间。

1 个答案:

答案 0 :(得分:2)

我认为使用Form控件无法做到这一点,至少不能直接做到这一点。如果您要坚持使用Form控件,我认为您可以根据文本大小缩放其.width属性,这是正确的选择。为了更好地做到这一点,您可能必须构建一个字典对象或其他东西,然后根据您在字典对象中列出的宽度将字符串中所有字符的宽度相加。

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

.WordWrap = False
.AutoSize = True

我认为人们通常更喜欢使用表单控件,因为它们更加简单。但是我也认为,通常,ActiveX控件具有更大的灵活性,您可以根据需要进行更多自定义。您可以阅读有关Form控件和ActiveX控件here的更多内容。