VBA – 自动格式包装的单元格,因此单元格的宽度等于最长单词的宽度

我想要设置每列的宽度,以便包装文本单元格中的单个单词不会被分成2行。 Excel处理这个单词的宽度小于列的宽度。 但是,比列更广泛的单词是分裂的。 我想列自动格式化的宽度,以便它只是足够宽,所以最长的单词不需要拆分。 Excel有办法处理这个问题吗?

这是一个相当不错的近似值。 它将列的大小设置得比最长的单词宽一点。 所以单元格的宽度不会和最长的单词宽度一样,会稍微宽一些,但是会阻止最长的单词被分割。

sub foo是一个将列大小设置为Sheet1上单元格A1中最大单词的示例。 您可以添加另一个函数来检查列中的所有单元格以获取列中最长的单词。 现在我们只是检查列中一个单元格中最长的单词。

Option Explicit Sub foo() FitColToLongestWord Sheet1.Range("A1") End Sub Sub FitColToLongestWord(cell As Range) Dim strLongestWordLen As String Dim str() As String Dim LongestWordLength As Integer str() = Split(cell.Value, " ") LongestWordLength = GetLongestWordLength(str()) Sheet1.Columns(cell.Column).ColumnWidth = LongestWordLength End Sub Function GetLongestWordLength(str() As String) As Integer Dim i As Integer Dim max As Integer Dim current As Long max = Len(str(LBound(str))) For i = LBound(str) To UBound(str) current = Len(str(i)) If current > max Then max = current End If Next i GetLongestWordLength = max End Function