0

我找不到这个问题的答案,并认为答案可能适用于对其他事物和其他人有用。

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

由于有不同数量的文本(现在大部分是隐藏的),在启用了换行文本和 row.autofit 的情况下,可见列的行高将比隐藏列之一的行高大得多这些特定行中的文本量。

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

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

这是我的第一篇文章,而且是这方面的初学者,所以如果我在提出问题的方式上做错了什么,请告诉我。下面是我到目前为止所得到的地方,但是我在 If Not.. 开头的行上出现类型不匹配错误。

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
4

1 回答 1

0

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

Cells(r, aCell.Column)
于 2013-09-17T04:37:59.457 回答