This is really a two part question. Firstly, you can ensure that your subroutines do not show in the Macro Run dialog box by ensuring that each one requires a parameter to be passed to it. You can do this even whilst requiring an Optional parameter which then does not affect the calling of the Sub. The following code should demonstrate the point:
Sub Test2(Optional dummy As Byte)
To lock up the code so it can't be seen from the VBE requires you to do something else, you need to lock the project for viewing. To do this go to the VBE, select Tools -> VBAProject Properties ... from the menus (NB if you've changed the name of your project from the default of "VBAProject" to something else then the menu option will read (something else) Properties ...). This will bring up the project properties dialog box. Select the Protection tab, check the lock project for viewing checkbox, enter a password and click ok. If you save and re-open the file you will not be able to view any of the code without first entering the password.
It should be noted that whilst this password provides a level of deterant to viewing the code it is not totally secure. There are programs available for purchase that will crack the password in less than a second. If you really don't want people to steal your intellectual property then you are best off getting a copy of Visual Studio, writing your code in VB
/ C, compiling your code into a DLL and linking your Excel workbook to the DLL. Its a lot more work though!