[英]Selecting sheet to copy to based on cell value(Month name) from other sheet in other workbook
我有一個我自己無法解決的問題。 讓我解釋一下這個問題:我使用兩個工作簿:1. 表格 2.Logistics 2021,從 1 月到 12 月有 12 張。
在工作簿 1中制作了一個表格來填寫一些信息。 完成此表格並打印后,我想將所有信息復制到工作簿 2的特定工作表上,然后將所有信息復制到一行中。 我想使用工作簿 1中單元格中的月份名稱,並將該月份名稱(單元格 F6)用於 select工作簿 2中的相應工作表
到目前為止,我使用以下代碼:
Sub Open_ExistingWorkbook()
'Open existing Workbook Logistics 2021 Workbook, specific sheet and then
'Writing Bol info to workbook Logistics 2021 Workbook and close it again
'Active Workbook is “Formsbook”
Dim BolNumber As String, DeliveryDate As Date, Time As String
BolNumber = Range("K4")
DeliveryDate = Range("F6")
Time = Range("J29")
Workbooks.Open "C:\Users\BOL sheets\Logistics 2021 Workbook.xlsx"
Worksheets("April").Select
Worksheets("April").Range("A1").Select
If Worksheets("April").Range("A1").Offset(1, 0) <> "" Then
Worksheets("April").Range("A1").End(xlDown).Select
End If
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = DeliveryDate
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Time
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = BolNumber
ActiveCell.Offset(0, 1).Select
ActiveWorkbook.Close Savechanges:=True
End Sub
您不能像原始代碼那樣編寫值,它會減慢宏的執行速度,並且在結果不正確時難以跟蹤:
If Worksheets("April").Range("A1").Offset(1, 0) <> "" Then
Worksheets("April").Range("A1").End(xlDown).Select
End If
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = DeliveryDate
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Time
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = BolNumber
ActiveCell.Offset(0, 1).Select
更好的解決方法應該是:
Dim lastrow As Long
If Worksheets("April").Range("A1").Offset(1, 0) <> "" Then
lastrow = Worksheets("April").Range("A1").End(xlDown).row + 1
Else
lastrow = 1
End If
Worksheets("April").Cells(lastrow, 1).Value = DeliveryDate
Worksheets("April").Cells(lastrow, 2).Value = Time
Worksheets("April").Cells(lastrow, 3).Value = BolNumber
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.