从使用宏记录器的快速播放中,我得到了以下代码:
Sub insertRow()
Dim insertBeforeRow
insertBeforeRow = 1
ActiveSheet.Rows(insertBeforeRow).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
' The following two lines are the same - both active the second sheet in the book
Sheet2.Activate
Sheets(2).Activate
ActiveSheet.Rows(insertBeforeRow).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
然后快速使用调试器,我看到 ActiveSheet 具有属性index
- 这是它在 Sheets 集合中的索引。(单击ActiveSheet
,右键单击并选择添加观察)
我想出了这个(没有错误检查,别忘了添加一些!- 选择工作簿中的最后一张表并运行它会导致可怕的“呃,呃,你不是假的”错误声音和消息框)
Sub getActiveSheet()
Dim curSheetIndex, numSheets, secondSheetIndex
curSheetIndex = ActiveSheet.Index
secondSheetIndex = curSheetIndex + 1
' the following two lines are equivalent - both operate on the Active Sheet
ActiveSheet.Cells(1, 1) = "Active Sheet"
Sheets(curSheetIndex).Cells(1, 1) = "Active Sheet"
' finally, operate on the following sheet
Sheets(secondSheetIndex).Cells(1, 1) = "Sheet following Active Sheet"
End Sub
您可以以适合您目的的方式将两个片段焊接在一起。在发现可用的功能和属性时,VBA 环境中的调试器非常漂亮。老实说,这是我非常喜欢在 VBA 中完成此类小任务的原因之一。当至少对调试器和 Excel 的对象模型有一点熟悉时,它通常很快就很容易获得您想要的效果。