[英]VBA code to copy cells in specific column and paste (value) it to cells in specific column on another Sheet based on conditions
[英]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.