The tab order is determined by the TabIndex property of each control.
How you set them depends on what version of VB you are using, as well. For example, the VBA which is built into MS Access has an option to automatically assign the tab order of all the controls in one go. This is a very handy feature, but I don't believe it exists in VB6. It may have been added into the VB.Net versions. Once you have done the"auto set", you can then modify them if you don't agree with the order.
In VB6, the trick to getting it right and saving time is to set the TabIndex of the controls in reverse order. By that, I mean you start by clicking the control that should get the focus last - this is frequently something like a Cancel button.
Then you select TabIndex in the properties window, and type "0" (without the quotes, obviously). Then, without bothering to press Enter, click the next-to-last control. Type "0" again. Click the 3rd-last control, and type "0". And so on, until you get all the way back to the first control on the form. You see, each time you set the TabIndex property of a control, it will increase the rest of them to make room. So if you start with the last one like this, and set them all to zero, you end up with them all in the correct sequence.