我的 VBA 经验极其有限。我在 M19:T39 的名为“Daily Dashboard”的工作表中有数据。这些需要每天作为条目复制到名为“报告工具”的工作表上名为“报告日志”的表中,以作为历史记录。要复制的行数是可变的。因此,我需要代码帮助来确定有多少行,将它们添加到表中,然后复制数据。以下是我到目前为止所想到的,当我只复制一行时这非常容易,但现在我陷入了困境。我在遇到问题的地方打了问号。
Sub Dispatch_Report_Save()
'Confirm with user
If MsgBox("WARNING: Continuing will add a new date entry to the Dispatch Report Log and should only be used once per day. Update Button should be used to make changes once already saved. Would you like to continue? ", vbYesNo) = vbNo Then Exit Sub
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = ActiveWorkbook.Sheets("Daily Dashboard")
Set sh2 = ActiveWorkbook.Sheets("Reporting Tool")
'Set active worksheet
Worksheets("Reporting Tool").Activate
'Add new Rows to Tables
Set newrow = Sheets("Reporting Tool").ListObjects("ReportingLog").ListRows.Add(?????????)
'Copy values
sh2.Range("?????????").Select
Selection.Copy
sh2.Range("?????????").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Set active worksheet
Worksheets("Daily Dashboard").Activate
'Select Cell
sh1.Range("E6").Select
'Success Message
MsgBox "Daily Dispatch Statistics have been saved."
End Sub
值得一读:
Sub Dispatch_Report_Save()
'Confirm with user
If MsgBox("WARNING: Continuing will add a new date entry to the Dispatch Report Log and should only be used once per day. Update Button should be used to make changes once already saved. Would you like to continue? ", vbYesNo) = vbNo Then Exit Sub
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = ActiveWorkbook.Sheets("Daily Dashboard")
Set sh2 = ActiveWorkbook.Sheets("Reporting Tool")
Dim lastRow As Long: lastRow = sh1.Cells(sh1.Rows.Count, "M").End(xlUp).Row
Dim srcRng As Range, RowCnt As Long, ColCnt As Long
Set srcRng = sh1.Range("M19:T" & lastRow)
RowCnt = srcRng.Rows.Count
ColCnt = srcRng.Columns.Count
Dim rCell As Range
With Sheets("Reporting Tool").ListObjects("ReportingLog")
Set rCell = .Range.Columns(1).Cells(.Range.Columns(1).Cells.Count + 1).Resize(RowCnt, 1)
rCell.Value = Date ' Col date
rCell.Offset(, 1).Value = srcRng.Columns(1).Value ' Col Job
rCell.Offset(, 2).Resize(, ColCnt - 2).Value = srcRng.Columns(4).Resize(, ColCnt - 2).Value ' Other Cols
.Resize sh2.Range("A2").CurrentRegion ' expand table
End With
'Success Message
MsgBox "Daily Dispatch Statistics have been saved."
End Sub