Copy/Paste 到下一行

Copy/Paste to Next Row

我的 Worksheet_Calculate 活动进行得很好。但是,当它粘贴时,它会在 sht2 上找到下一个打开的行,然后一旦再次触发事件,它就会重新粘贴到它第一次粘贴的原始行上。目标是每次在 sht2 上触发事件时在下一个可用行中 copy/paste A39:Q39,而不是覆盖之前的粘贴。

Private Sub Worksheet_Calculate()

Dim timeCells As Range, i As Integer

If Worksheets("Dashboard").ToggleButton1.Value = True Then

On Error GoTo SafeExit
Application.EnableEvents = False

'TimeLog
Set timeCells = Me.Range("D4:D393")
Set sht1 = ThisWorkbook.Sheets("Dashboard")
Set sht2 = ThisWorkbook.Sheets("Log")
Set cpyRng = sht1.Range("A39:Q39")
Set rngLogTargetBeginningCell = sht2.Cells(Rows.Count, 1).End(xlUp)
Set rngLastCellSelection = Selection

Application.ScreenUpdating = False ' Stop Updating Graphic during data copy

'TimeLog
For i = 1 To UBound(myArrTimeLog)
    If timeCells(i, 1).Value <> myArrTimeLog(i, 1) Then
        cpyRng.Copy
        rngLogTargetBeginningCell.Offset(0, 1).PasteSpecial xlPasteValues
        Application.CutCopyMode = False ' Remove the copy area marker
        rngLastCellSelection.Select    ' reselect the old cell
        Application.ScreenUpdating = True  ' update graphics again
    End If
Next i
End If

SafeExit:
Application.EnableEvents = True
PopulateTimeLog
End Sub

一个简单的任务需要大量代码。 您的代码复制到与之前完全相同的位置,因为您告诉代码从最后一行的单元格 1 旁边的一列开始。 将粘贴行中的偏移量更改为

rngLogTargetBeginningCell.Offset(1, 0).PasteSpecial xlPasteValues

你可以开始了。 由于您的代码中有更多内容,我无法在没有更多信息的情况下进行解释,因此我无法肯定地告诉您它是否有效...但可能会尝试...