If you have formulas like =Sheet1$A$1 in the cells of Sheet2.
And if a row is filled when there is data in all of the cells of A1:I1, you could put this in the code module for Sheet1.
Private Sub Worksheet_Change(ByVal Target As Range)
With Range("A1:I1")
If Application.CountA(.Cells) = .Cells.Count Then Call PrintForm
End With
End Sub
Sub PrintForm()
Sheets("Sheet2").Activate
If Application.Dialogs(xlDialogPrint).Show(2, 1, 1, 1) Then
With Sheets("Sheet1")
.Unprotect
With Application.Intersect(.UsedRange, .Range("A:AZ"))
.Offset(1, 0).Value = .Value
.Offset(1, 0).Locked = True
With .Rows(1)
.ClearContents
.Locked = False
End With
End With
.Protect
End With
Else
MsgBox "Form not printed. Data not moved."
End If
Application.Goto Sheets("Sheet1").Range("A1")
End Sub
Bookmarks