VBA-如何引用 Range 的最后一行数据?

VBA-如何引用 Range 的最后一行数据?

我的 Excel 工作簿有一个摘要回顾表,它从后续的详细信息表(经常添加新的详细信息表)中提取数据。

当添加新的详细信息表时,我希望我的宏在 Recap 表的末尾插入一个新行,使用与 Recap 表中其他行相同的格式格式化该行(为简单起见,我抓住了第 37 行),并使用新添加的详细信息表中的数据填充新 Recap 行中的单元格。

当我尝试让 VBA 选择最后一行来粘贴行 A37:X37 的格式时,出现错误“对象‘_Global’的方法‘Range’失败”。

然后我需要将“B38”更改为 B[最后一行的行号]。(我不能使用特定的行号,因为将继续添加许多新行。)

请注意,我对 VBA 还很陌生。

以下是我所拥有的:

Function GetLastSheetName() As String
    Dim wbk As Excel.Workbook

    Set wbk = Excel.ActiveWorkbook
    GetLastSheetName = wbk.Worksheets(wbk.Worksheets.Count).Name
End Function
Sub AddToRecap()
'
' AddToRecap Macro
' Add show info to Recap sheet
'

'
Dim strLastSheetName As String

strLastSheetName = GetLastSheetName()

Dim Lastrow As Integer
Lastrow = Sheets("Recap").Cells(Rows.Count, 2).End(xlUp).Row

    Sheets("Recap").Cells(Rows.Count, 2).End(xlUp).Offset(1).Select
    Selection.EntireRow.Insert
    
    Range("A37:X37").Select
    Selection.Copy
    Range("Lastrow").EntireRow.Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Range("A37").Select
    Selection.AutoFill Destination:=Range("A37:A38"), Type:=xlFillDefault
    Range("A37:A38").Select
    Range("B38").Select
    ActiveCell.FormulaR1C1 = "='" & strLastSheetName & "'!R[-29]C"
    Range("B38").Select
End Sub

代码截图-错误突出显示

答案1

我想到了!

这里就是,以防有人正在寻找类似的东西。

Function GetLastSheetName() As String
    Dim wbk As Excel.Workbook

    Set wbk = Excel.ActiveWorkbook
    GetLastSheetName = wbk.Worksheets(wbk.Worksheets.Count).Name
End Function
Sub AddToRecap()
'
' AddToRecap Macro
' Add show info to Recap sheet
'

'
Dim strLastSheetName As String

strLastSheetName = GetLastSheetName()

Dim Lastrow As Integer
Lastrow = Sheets("Recap").Cells(Rows.Count, 2).End(xlUp).Offset(1).Row

    Sheets("Recap").Cells(Rows.Count, 2).End(xlUp).Offset(1).Select
    Selection.EntireRow.Insert
    
    Range("A37:X37").Select
    Selection.Copy
    Range("A" & Lastrow).Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Range("A37").Select
    Selection.AutoFill Destination:=Range("A37:A" & Lastrow), Type:=xlFillDefault
    Range("A37:A" & Lastrow).Select
    Range("B" & Lastrow).Select
    ActiveCell.FormulaR1C1 = "='" & strLastSheetName & "'!R[-29]C"
    Range("B" & Lastrow).Select
End Sub

相关内容