VBA复制和粘贴仅根据活动工作表select2个单元格

我得到了一个奇怪的错误与我的代码,如果我没有运行macros之前工作表活动它将只复制单元格B1和B2到我的其他工作簿模板构build。

下面附上我的工作。

Public Sub Info_Copy() Dim Lastrow As Integer Dim SOH As Excel.Workbook Set SOH = Workbooks("StockOH") Dim Template As Excel.Workbook Set Template = Workbooks("Template Build") Lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row SOH.Sheets("NSF").Activate Range("B2:B" & Lastrow).Copy Template.Sheets("Sheet1").Activate Range("B2").Select ActiveSheet.Paste 

由于使用了ActiveSheet对象,因此正在计算活动工作表上的行数。

如果您不想每次需要使用活动工作表时都确切地告诉它使用哪张工作表。 例如:

 Lastrow = Workbooks("SomeWorkbook").Worksheets("SomeSheet").Cells(Rows.Count, 1).End(xlUp).Row 

这很难说,但我的猜测是你需要这样的东西

 Lastrow = SOH.Worksheets("SOH").Cells(Rows.Count, 1).End(xlUp).Row 

我想你是在这样的事情之后:

 Public Sub Info_Copy() Dim SOH As Excel.Workbook Set SOH = Workbooks("StockOH") Dim Template As Excel.Workbook Set Template = Workbooks("Template Build") With SOH.Sheets("NSF") '<--| reference wanted sheet in wanted workbook .Range("B2:B" & .Cells(.Rows.Count, 1).End(xlUp).Row).Copy Destination:=Template.Sheets("Sheet1").Range("B2") '<--| copy its column "B" cells from row 2 down to column A last not empty row and paste it to 'Template' workbook "Sheet1" worksheet from cell B2" End With End Sub 

在不同的工作簿之间工作时,重要的是将范围引用限定为workbook对象,因为:

  • 不同的Excel版本工作簿可能有不同的工作表行号,以便.Rows.Count必须引用到正确的工作簿

  • 不同的工作簿可以有同名的工作表