Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 基于单元格值优化VBA代码行高_Excel_Vba - Fatal编程技术网

Excel 基于单元格值优化VBA代码行高

Excel 基于单元格值优化VBA代码行高,excel,vba,Excel,Vba,我试图根据单元格值调整行高度。该操作必须在大约700行的过滤数据中运行 下面的代码可以工作,但需要2-3分钟才能完成操作,这太长了 我有没有可能不用循环就能做到这一点? 或者请让我知道,如果有什么我应该做的,以缩短手术时间 非常感谢你的帮助 Sub rowheight() Dim hgt As Integer Dim WorkRng As Range Application.ScreenUpdating = False Set WorkRng = Range("AJ6:AJ700") F

我试图根据单元格值调整行高度。该操作必须在大约700行的过滤数据中运行

下面的代码可以工作,但需要2-3分钟才能完成操作,这太长了

我有没有可能不用循环就能做到这一点? 或者请让我知道,如果有什么我应该做的,以缩短手术时间

非常感谢你的帮助

Sub rowheight()

Dim hgt As Integer
Dim WorkRng As Range

Application.ScreenUpdating = False

Set WorkRng = Range("AJ6:AJ700")

For Each C In WorkRng.SpecialCells(xlCellTypeVisible)

    If C.Value > 0 Then
        hgt = C.Value
        C.EntireRow.rowheight = hgt
    End If
Next C

Application.ScreenUpdating = True


End Sub

假设大部分处理是在设置行高时进行的,并且假设要将其设置为最大值,则函数将变为:

Sub rowheight()
    Dim hgt As Integer
    Dim WorkRng As Range

    Application.ScreenUpdating = False

    Set WorkRng = Range("AJ6:AJ700")

    hgt = 0
    For Each c In WorkRng.SpecialCells(xlCellTypeVisible)
        If c.Value > hgt Then
            hgt = c.Value
        End If
    Next c
    WorkRng.EntireRow.rowheight = hgt

    Application.ScreenUpdating = True
End Sub
你可以试试:

Option Explicit

Sub test()

    Dim i As Long, arr As Variant

    With ThisWorkbook.Worksheets("Sheet1")

        arr = .Range("AJ6:AJ700")

        For i = LBound(arr) To UBound(arr)

            If arr(i, 1) > 0 Then
                .Rows(i + 5).EntireRow.rowheight = arr(i, 1)
            End If

        Next i

    End With

End Sub

您正在处理1行。对于包含数据的每个单元格,可以调整行的高度。所以你设置它,设置它,设置它,然后。。。。为什么不通过一行来确定一次高度,然后再设置一次?你介意告诉我如何一次确定行高度吗?hgt是随行变化还是恒定?你是否尝试过
范围(“AJ6:AJ700”).EntireRow.AutoFit
@KarthickGunasekaran很遗憾,它不起作用,我也尝试了wrap text函数。另外,autofit也不理想,因为我想在行之间留出更多的空间。非常感谢!我为每一行指定了一个特定的行高值,因此我不会尝试将其设置为最大值。我是否有可能将值存储在数组中,但我不太确定如何执行…谢谢您的帮助。遗憾的是,这不起作用,因为我正在处理过滤后的数据。此操作将取消筛选所有内容。而且,这段代码似乎需要更长的时间来完成操作。。。