|First, allow me to offer a posting tip:|
Please click on the blue line at the bottom of my posts and read the instructions on how to use the pre tags to post VBA code and data in this forum. Thanks!
Let's break down your "copy" issue into smaller parts to make sure that we are on the same page. This may sound pretty simple, but please don't take it as demeaning, I'm just trying to make sure that I understand what you are asking for.
Set ws1 = ThisWorkbook.Worksheets("Timesheet")
These instructions make a copy of the Timesheet worksheet and place it before the last worksheet in the book, making it the "second to last sheet".
ThisWorkbook.Sheets(Sheets.Count - 1).Range("G25:G30").Copy _
ThisWorkbook.Sheets(Sheets.Count - 1).Range("D25:D30")
This instruction copies G25:G30 on the "second to last sheet" (via Sheets.Count - 1) and places it in D25:D30 of the "second to last sheet". In other words, the Copy occurs on the newly created sheet. It works for me every time.
Now, I am using "data" in G25:G30, not formulas, so perhaps that is part of the issue.
What do have in Timesheet!G25:G30?
What do you want in Timesheet(x)!D25:G30?
Click Here Before Posting Data or VBA Code ---> How To Post Data or Code.