<"user-defined type not defined"
This means any of three things:
1. You haven't referenced the library that defines the type
2. You fat-fingered the name of the type
3. You really did try to define a type, and forgot to.
The error is descriptive of the third possibility, which virtually never happens. The error looks for an existing type, then assumes that the user defined one (using the Type statement) and that it isn't there.
So, while not very descriptive, it's generally easily traceable to reason number 1. Much nicer error to have than, say, "ActiveX control can't create object" which we all know and love.
Bob