If you haven't created the DLL yet, but have the code in a Vbp, you can start it (it will then be registered) - but it justs sits there and waits for something to tell it what to do, because the start object has to be a multi use class, and of course a class object has to be created using the New keyword before it can be used, and this class object is created form a normal vbp.
The class, or another object that the class calls, then creates an instance of the form it needs to open.
So, I create a DLL with a multiuse class and a form. A method in the multiuse class creates a new instance of the form in the same dll project.
In a vb exe project, I reference the dll and then create a new object with the class in the dll. Then I execute the method of the class which will open the form in the dll.