You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel 2019 VBA如何仅为包含数据的行设置行高为18?

解决Excel VBA设置仅含数据行的行高为18的问题

环境与需求

  • 系统:Windows 10
  • Excel版本:2019
  • 需求:用VBA将工作表中仅包含数据的行的行高设置为18

原代码问题分析

你之前尝试的两段代码都存在逻辑问题:

  1. 第一段代码UsedRowsHeight1:

    Sub UsedRowsHeight1()
        ActiveWorkbook.Worksheets("Titles Data").Range("A" & Rows.Count).End(xlUp).RowHeight = 18
    End Sub
    

    这段代码仅修改了A列最后一个非空单元格所在的单独一行的行高,并未覆盖所有有数据的行。

  2. 第二段代码UsedRowsHeight2:

    Sub UsedRowsHeight2()
        Rows().AutoFit
        Rows.End(xlUp).RowHeight = 18
    End Sub
    

    先对所有行执行自动调整行高,之后仅修改工作表最后一行的行高,同样没有覆盖所有含数据的行,且未指定目标工作表,容易引发错误。

正确代码实现

方案1:基于已使用区域快速设置

直接定位工作表中所有已使用的单元格区域,批量设置对应行的行高:

Sub SetDataRowsHeight()
    Dim ws As Worksheet
    Dim usedRange As Range
    
    ' 指定目标工作表
    Set ws = ActiveWorkbook.Worksheets("Titles Data")
    ' 获取工作表内已使用的单元格区域
    Set usedRange = ws.UsedRange
    
    ' 批量设置该区域内所有行的行高为18
    usedRange.Rows.RowHeight = 18
End Sub

方案2:精准排除空行(含仅空格的行)

如果需要严格排除无实际数据的行,可以逐行检查后设置:

Sub SetDataRowsHeightPrecise()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    
    Set ws = ActiveWorkbook.Worksheets("Titles Data")
    ' 获取A列最后一个非空行的行号(可根据数据起始列调整)
    lastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
    
    ' 逐行检查并设置行高
    For i = 1 To lastRow
        ' 判断该行是否包含非空数据(排除纯空格行)
        If WorksheetFunction.CountA(ws.Rows(i)) > 0 Then
            ws.Rows(i).RowHeight = 18
        End If
    Next i
End Sub

代码说明

  • 方案1操作高效,适合数据区域无大量空行的场景;
  • 方案2通过CountA函数判断行内是否有实际数据,精准度更高,若数据起始列不是A列,可修改lastRow的获取逻辑(比如用ws.UsedRange.Row + ws.UsedRange.Rows.Count - 1获取最后使用行)。

内容的提问来源于stack exchange,提问作者user2303407

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 03:15:23