Watch what a macro is doing by reducing the Visual Basic editor window while stepping through the macro.
Record macros in small pieces. You can always move statements from one macro to another, or run the separate macros as subroutines.
After recording a macro, watch for ways to generalize it for future use. The CurrentRegion method is a great way to refer to a range that may be a different size each time you run the macro.
Use GetOpenFilename to prompt for a file name or the InputBox function to get information while running the macro.
Use variables to store a string or other value so that you can use it later in the macro.
Switch the recorder to relative mode to record relative movements rather than absolute addresses. This is particularly useful when appending to the bottom of a list.