What you have there is pretty close to what you need. If you are referring to a worksheet that is not active you can not 'Select' Objects on that sheet. Remember an object has to be active in order to Select it. Additionally you must qualify your statements with the name of the object, when you are referring to a worksheet that is not active, "Sheet4" in this case, which you have. You will find the "With" Statement invaluable for this purpose. See the online exel
vb help for details on use of the 'With' statement. Also see my reply in your other post "moving a row upward in excel" where I used 'With' and 'Cells' to reference non-selected objects.
This line in your code: "Sheet4.Range("A" & a & ":J" & a).Select"
Will produce an error if the sheet 'Sheet4' is not active.