Runtime Optimization: Integer division (\) is faster than float division (/), so use it when you want the decimal to be dropped. If you have X * 5 in a loop, and X does not change during the course of the loop, replace it with Reducer1, and put Reducer1 = X * 5 before the loop. If you have a value that ranges, for example, from 0 to 7, and you want to check if it's less than 7, use not equal (<>) rather than less than (<), because it's faster and the value cannot go above 7. Declare all variables in the header of the program. Don't use variable-length arrays or strings. Just set the array or string to a length which you expect it to never exceed. A little math is faster than reallotting memory. ("String * 32" is a set-length string. You cannot use a set-length string or array as a procedure parameter or function type.) Do not use Variants. Declare all variables with their respective specific types, such as "String * 5" or "Long." Use Int() or Fix() to remove unimportant decimals. (Int() returns the first integer less than or equal to the number; Fix() returns the first integer equally close or closer to 0.) Think carefully. For example, if you have "If blah * 4 = 20 Then," do the math and save your program the trouble thereof--instead, use "If blah = 5 Then." Think logically. There may be many instances in which you have designed a slow method of doing something that may be done faster another way. Check all the code that you didn't write or wrote long before for optimization. When loading or saving a file, do all the drive access in one command. Try using "Get #1, 0, FileBufferArray()" instead of "Get #1, 0, Blah" and "Get #1, 1, Bleh," and so on. Design Time Optimization: Speed: If you use a value in several places, such as 255, set a constant for it. This will decrease the time it takes you to change every instance of the value, and it doesn't slow down the program at all during runtime. Use pieces of code from your other projects or from PSCode.com or other code websites. Use a Project Cleaner program, if available. At the time this was written, one was available at "http://pscode.com/vb/scripts/ShowCode.asp?txtCodeId=38331&lngWId=1". Organization: Use as many subprocedures as you should. Anything that's repeated can be placed in a different procedure. Put comments on the line following the subject thereof. Use recommended tabbing--each block's (If/ElseIf/Else, Select Case/Case, and Subs) contents are indented once more (4 spaces) than the header and footer thereof. Don't use the underscore (_) line-continuation trick if you can avoid it. It makes things look more complicated, and it takes you time to use it. Think: if you have something indented seven times, how much code can you fit on that one line? Keeping Users Happy: Put an error-handler in every procedure ("On Error GoTo OhNo"), and create a back-up Save function (called by the error handler), in case the Save function is what fails. Try actually using the program several times. Any errors you come across, of course, must be fixed. Do not allow users to input values that may cause errors. Always explain why the value is not allowed. For example, when a user puts a letter in a text box designed for numbers, "I'm sorry, but that box is reserved for numbers." And then, of course, remove the letter(s). Account for unforseen circumstances, and attempt to forsee any error-causing circumstances. If a user pastes many letters in the text box in the above example, the error may repeat every time they delete one of those letters if you didn't code the program to remove said letters first. If a function may take a long time to do, add a dialogue box asking if it's okay to do that particular thing. Also, try to have an accessible Cancel button. If a program attempts to load a large file, it is likely that a Cancel button will not help until after the file has finished loading. Offer the user the chance to report an error or reference a help guide if possible.