如何在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
相关产品推荐
相关产品推荐

