Excel 基于单元格值优化VBA代码行高
我试图根据单元格值调整行高度。该操作必须在大约700行的过滤数据中运行 下面的代码可以工作,但需要2-3分钟才能完成操作,这太长了 我有没有可能不用循环就能做到这一点? 或者请让我知道,如果有什么我应该做的,以缩短手术时间 非常感谢你的帮助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
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也不理想,因为我想在行之间留出更多的空间。非常感谢!我为每一行指定了一个特定的行高值,因此我不会尝试将其设置为最大值。我是否有可能将值存储在数组中,但我不太确定如何执行…谢谢您的帮助。遗憾的是,这不起作用,因为我正在处理过滤后的数据。此操作将取消筛选所有内容。而且,这段代码似乎需要更长的时间来完成操作。。。