VBA - 自动格式化单元格,使单元格的宽度等于最长单词的宽度

时间:2017-01-20 17:44:56

标签: excel vba excel-vba

我想设置每列的宽度,以便包装的文本单元格中的单个单词不会分成2行。对于宽度小于列宽度的单词,Excel会处理此问题。但是,比列宽的单词是分开的。我希望该列自动格式化宽度,使其足够宽,以便最长的单词不需要拆分。 Excel有办法处理这个吗?

1 个答案:

答案 0 :(得分:1)

这是一个非常好的近似值。它使列的大小比最长的单词宽一点。因此,单元格的宽度与最长单词的宽度完全相同,但它会更宽一点,但它会阻止最长的单词被分割。

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