我的 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