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

如何在VBA中定位表格最后一行之后的行并设置字体格式

VBA代码修正建议

原代码存在以下问题及对应修正方案:

  • 未定义LastRow变量:需先获取表格最后一行的行号,才能计算目标行的位置
  • 语法不完整:With newRow代码块缺少收尾的End With语句
  • 目标范围定位错误:Range(LastRow + 2)未限定列范围(A:M),也未关联工作表对象,易引发引用错误
  • ListRow.Range(12).FillDown用法错误:ListRow的Range代表整行,若要填充特定列需明确列范围,若无需新增行填充可直接移除该语句

修正后的代码(无需新增行场景):

Sub Addnewrow()
    Dim lo As ListObject
    Dim lastTableRow As Long
    Dim targetRowRange As Range
    
    ' 获取指定表格对象
    Set lo = Range("Data").ListObject
    ' 获取表格最后一行的行号
    lastTableRow = lo.ListRows(lo.ListRows.Count).Range.Row
    ' 定位目标区域:表格最后一行后第2行的A:M列
    Set targetRowRange = lo.Parent.Range("A" & lastTableRow + 2 & ":M" & lastTableRow + 2)
    
    ' 设置字体格式
    With targetRowRange.Font
        .Size = 12
        .Name = "Tahoma"
        .Bold = True
    End With
End Sub

如果需要保留新增表格行并填充第12列(M列)的逻辑,可使用以下代码:

Sub Addnewrow()
    Dim lo As ListObject
    Dim newRow As ListRow
    Dim lastTableRow As Long
    Dim targetRowRange As Range
    
    Set lo = Range("Data").ListObject
    ' 新增表格行
    Set newRow = lo.ListRows.Add
    ' 填充新增行的第12列(M列)
    newRow.Range.Columns(12).FillDown
    
    ' 获取表格最后一行的行号
    lastTableRow = lo.ListRows(lo.ListRows.Count).Range.Row
    ' 定位目标区域:表格最后一行后第2行的A:M列
    Set targetRowRange = lo.Parent.Range("A" & lastTableRow + 2 & ":M" & lastTableRow + 2)
    
    ' 设置字体格式
    With targetRowRange.Font
        .Size = 12
        .Name = "Tahoma"
        .Bold = True
    End With
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 01:38:18