You should never, ever, be using Select or Active... in your code.
Unless you explicitly want your sub to click on a cell, or you explicitly want to work off of a user-selection, this is an incredibly slow, inefficient, fragile way of doing things.
This:
Range("A1").Select
Selection.FormulaR1C1 = "Knife"
Or
Range("A1").Select
ActiveCell.FormulaR1C1 = "Knife"
Is much better expressed like so:
Range("A1").FormulaR1C1 = "Knife"
Furthermore, Range("A1") is implicitly calling [ActiveSheet].Range("A1"). You should explicitly qualify your references to avoid bugs down the road. Like so:
ws2.Range("A1").FormulaR1C1 = "Knife"
ws2.Range("A2").FormulaR1C1 = "Fork"
ws2.Range("A3").FormulaR1C1 = "Spoon"
And then you can use a With statement to make it even better:
With ws2
.Range("A1").FormulaR1C1 = "Knife"
.Range("A2").FormulaR1C1 = "Fork"
.Range("A3").FormulaR1C1 = "Spoon"
End With
More to follow at later date.