根据所选列中的文本调整行高

时间:2013-09-17 02:28:43

标签: excel vba row-height

我找不到答案,认为答案可以适用于其他人和其他人。

在单元格G1中是一个下拉列表,在右边的列中有超过300行的文本,每列的标题构成了下拉列表中的内容(G1)。根据下拉列表中选择的内容,除了与下拉列表选择匹配的列外,其他所有列都将被隐藏。

由于文本数量不同(现在大部分都是隐藏的),打开包装文本和row.autofit,可见列的行高将比隐藏列中的其中一列大得多在这些特定行中有大量文本。

我想运行一个宏,根据所选列所需的行高来调整行高。其中大部分将是单线(15),大约需要做大一些。我想将它们全部设置为15开始,然后找到需要更大高度的行并相应地调整高度。

我从其他帖子中了解到没有简单的解决方案(我正在使用Excel 2007),虽然我喜欢复制单元格内容的想法,将其粘贴到工作表的空白区域,使用该行上的自动调整功能得到正确的行高,然后将行高应用于复制文本的位置。

这是我的第一篇文章,非常初学者,所以请告诉我,如果我在提出问题方面做错了。下面是我到目前为止所处的位置,但是我在第一行开始出现类型不匹配错误。

Option Explicit 
Sub AdjustRowHeights()

    ' below code to adjust row height for selected comments

    Dim strSearch As String
    Dim aCell As Range
    Dim r As Integer

    strSearch = "G1"

    ' to set all rows to single row height
    Rows("9:331").Select
    Selection.RowHeight = 15

    ' to find the column currently on dislplay (header matching cell G1)
    Set aCell = Rows(5).Find(What:=strSearch, LookIn:=xlValues, LookAt:=xlWhole)

    ' cycle through rows checking active comments column for text and adjust row height if necessary
    For r = 9 To 331
    If Not Cells(r, aCell) Is Nothing Then
        Cells(r, aCell).Select
        Selection.Copy
        Cells(350, aCell).Select
        ActiveSheet.Paste
        Rows("350:350").EntireRow.AutoFit
        Rows("r:r").Select
        Selection.RowHeight = Rows("350:350").RowHeight
    End If
    Next r
End Sub

1 个答案:

答案 0 :(得分:0)

您遇到类型不匹配错误,因为Cells需要行和列的Long或Integer参数。尝试类似:

Cells(r, aCell.Column)