It sounds like you still may have some inefficiencies in your code (it is seldom necessary to select the ranges in VBA code, you can usually work with them directly).
For example, whenever you have one line ending in "Select" and the next beginning with "Selection", they can usually be combined into one, i.e.
VBA Code:
Range(...).Select
Selection.Locked=TRUE
can be simplified to just:
Not only does it make your code shorter, but selecting ranges can actually cause screen flickering while the code is running, and make your code run slower.
If you get your VBA code by using the Macro Recorder, it is very literal, and records every range selection. So often times, while the recorded code will work fine, it can often be cleaned up a little to make it run more efficiently.
I am glad you seem to have gotten everything working the way you want now. If you want us to help you "clean up" the code a little, you can post what you currently have here, and we can help you with that.