Vba 如何将文本框属性更改为";溢出时收缩文本“;?

Vba 如何将文本框属性更改为";溢出时收缩文本“;?,vba,forms,ms-word,textbox,Vba,Forms,Ms Word,Textbox,我试图在溢出时自动将文本框中的文本缩小到适当的大小 PowerPoint和MS Publisher中有类似的文本框功能,但MS Word中没有。我在网上搜索过,有很多关于如何包装文本或缩小文本以适应文本框宽度的讨论 我希望文本框仅在文本框中的空间不足时才能换行并缩小文本大小。Word没有内置的功能。Word表格单元格有一个“适合文本”选项,但这会强制内容全部适合单元格中的一行,而不是将其压缩到刚好适合垂直高度 我编写了一个用于压缩文本的宏,以消除次要换行,您可以从:。该宏可以调整为仅对选定/指定

我试图在溢出时自动将文本框中的文本缩小到适当的大小

PowerPoint和MS Publisher中有类似的文本框功能,但MS Word中没有。我在网上搜索过,有很多关于如何包装文本或缩小文本以适应文本框宽度的讨论


我希望文本框仅在文本框中的空间不足时才能换行并缩小文本大小。

Word没有内置的功能。Word表格单元格有一个“适合文本”选项,但这会强制内容全部适合单元格中的一行,而不是将其压缩到刚好适合垂直高度

我编写了一个用于压缩文本的宏,以消除次要换行,您可以从:。该宏可以调整为仅对选定/指定的文本框执行类似操作。如果你需要更多的冷凝,而不是仅仅消除一个简短的最后一行,将需要进一步的mods。例如,您可以合并以下内容:

With Selection.ShapeRange.TextFrame
  Do While .Overflowing = True
    .TextRange.Font.Size = .TextRange.Font.Size - 0.5
  Loop
End With

我修改并产生了以下代码,但我不知道当文本框中的文本发生更改时如何自动触发它。有什么建议吗

With ActiveDocument.Shapes("Text Box 3").TextFrame 
If .Overflowing = msoTrue Then 
Do ActiveDocument.Shapes.Range(Array("Text Box 3")).Select 
Selection.Font.Size = Selection.Font.Size - 1 
Loop Until .Overflowing = msoFalse 
End If 
End With

谢谢,大脚架。今晚晚些时候我会试试。当文本框中有太多字符时,此宏是否会自动调整文本大小,而无需单击任何按钮或其他触发器?它本身不是-它只是一个代码循环,将构成较大子对象的一部分。在任何情况下,Word都没有自动调整文本大小的事件补漏白。您可能得到的最接近的是基于WindowSelectionChange事件的内容,请参见:和中的演示代码