First line of code works fine, second errors out with a syntax error. I want it to do the same thing as first line except paste values only.
ThisWorkbook.Sheets(1).Range(Range("A4"), Range("A4").End(xlDown)).Copy .Sheets(1).Range("A1")
ThisWorkbook.Sheets(1).Range(Range("G4"), Range("G4").End(xlDown)).Copy .Sheets(1).Range("B1").PasteSpecial xlPasteValues
Full code for the sub
Private Sub CommandButton1_Click()
With Workbooks.Add
ThisWorkbook.Sheets(1).Range(Range("A4"), Range("A4").End(xlDown)).Copy .Sheets(1).Range("A1")
ThisWorkbook.Sheets(1).Range(Range("G4"), Range("G4").End(xlDown)).Copy .Sheets(1).Range("B1").PasteSpecial xlPasteValues
Application.DisplayAlerts = False
.SaveAs "C:\Users\my username\Desktop\Macro Demo\output.xlsx"
Application.DisplayAlerts = True
.Close
End With
End Sub
Range("A4")
and Range("A4").End(xlDown)
may not belong to ThisWorkbook.Sheets(1)
and you cannot define a range using cells from another worksheet.
Private Sub CommandButton1_Click()
Dim nwb As Workbook
Set nwb = Workbooks.Add
With ThisWorkbook.Sheets(1)
.Range(.Range("A4"), .Range("A4").End(xlDown)).Copy _
Destination:=nwb.Sheets(1).Range("A1")
With .Range(.Range("G4"), .Range("G4").End(xlDown))
nwb.Sheets(1).Range("B1").Resize(.Rows.Count, 1) = .Value
End With
End With
With nwb
Application.DisplayAlerts = False
.SaveAs "C:\Users\my username\Desktop\Macro Demo\output.xlsx"
Application.DisplayAlerts = True
.Close
End With
End Sub