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

Posted

技术标签:

【中文标题】根据所选列中的文本调整行高【英文标题】:Adjusting row height according to text in selected column 【发布时间】:2013-09-17 02:28:43 【问题描述】:

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

单元格 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

【问题讨论】:

【参考方案1】:

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

Cells(r, aCell.Column)

【讨论】:

以上是关于根据所选列中的文本调整行高的主要内容,如果未能解决你的问题,请参考以下文章

如何在jqGrid中禁用所选列的搜索选项?

使用两个相关的 selectInput 过滤 R Shiny 中的数据帧

如何替换表*中的NA值以用于所选列*? data.frame,data.table

根据两列中的文本拆分行(Python,Pandas)

DT::datatable – 格式化所选列?

添加对不同于 id 的所选列的引用