为什么Excel VBA设置行高的IF条件判断没有生效?
问题原因
当你定义的Rng包含多行数据时,Rng.EntireRow.RowHeight属性仅在所有行的行高完全一致时才会返回具体的高度数值,只要范围内存在任意两行高度不同,该属性就会返回Null。Null < 45的逻辑判断结果为假,因此IF分支完全不会触发,这就是加了条件后代码没有效果的核心原因。
解决方法
如果你需要只调整行高不足45的行、保留原本高于45的行的设置,可逐行遍历目标范围做判断,修正后代码如下:
Sub Row_Height() Dim Rng As Range Dim RowItem As Range Set Rng = ActiveSheet.Range("A3", Cells(Rows.Count, "A").End(xlUp)) ' 遍历每一行单独判断行高 For Each RowItem In Rng.Rows If RowItem.RowHeight < 45 Then RowItem.RowHeight = 45 End If Next End Sub
如果你不需要保留原本更高的行高设置,只要所有目标行高度统一为45即可满足需求,直接去掉IF判断、赋值Rng.EntireRow.RowHeight = 45即可。
内容的提问来源于stack exchange,提问作者Leedo
相关产品推荐
相关产品推荐

