簡體   English   中英

VBA復制和粘貼僅基於活動工作表選擇2個單元格

[英]VBA Copy & Paste only selecting 2 cells based on active sheet

我的代碼遇到一個奇怪的錯誤,即如果我在運行宏之前沒有激活表SOH,它將僅將單元格B1和B2復制到我的其他工作簿模板構建中。

我已經在下面附上我的作品。

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

我想你是在追求這樣的東西:

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必須引用到正確的工作簿

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

您正在計算活動工作表上的行數,因為您使用了ActiveSheet對象。

如果您不想每次都使用活動工作表,則需要准確告訴它要使用的工作表。 例如:

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

很難說,但是我猜你需要這樣的東西

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM