Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

No se ha definido el tipo definido por el usuario

5,514 views
Skip to first unread message

chele

unread,
Oct 4, 2002, 6:16:54 AM10/4/02
to
Esto me sale muy a menudo y no se por que . Es cuando uso esto por ejemplo :

Private Function nodetype(test_node As Node) As objecttype

¿Que puede ser o que me falta declarar?. Estoy perdido con esto.

Venga un saludo. Hasta luego.


m g e r m a n @@@cantv.net German

unread,
Oct 4, 2002, 10:15:33 PM10/4/02
to

"chele" <ch...@planetarol.com> wrote in message
news:OfG4w#4aCHA.2136@tkmsftngp09...

Sucede cuando VB no sabe con qué tipo de variables estás trabajando.

Si declaras:
Dim A As Integer

Visual Basic entiende que la variable "A" es de tipo entero.

Si declaras:
Dim B As Double

Visual basic sabe lo que es el tipo Double, y entiende que quieres que la
variable "B" sea de ese tipo.

-----------------------------------

Eso de "No se ha definido eltipo definido por el usuario", significa lo
siguiente:

Hay tipos definidos en VB, como Integer, String, Double, etc.

También hay tipos definidos por otros objetos, como por ejemplo, si le pones
al proyecto una referencia ADO, podrás declarar objetos Recordset,
Connection, Command y tendrás otros como Field, etc.

Por último, hay tipos definidos por tí, como por ejemplo:
Private Type Complejo
Real As Double
Imaginaria As Double
End Type

En una declaración como:
Dim C As WEHFWYEFYWG

Visual Basic no encuentra "WEHFWYEFYWG", ni en los tipos del propio VB, ni
en las referencias a los objetos que tiene tu programa ni en los tipos
definidos por tí, (como el Type Complejo definido arriba). Entonces lanza el
error mencionado.

En la sentencia que pones de ejemplo:


Private Function nodetype(test_node As Node) As objecttype

Significa que VB no encuentra el significado de Node o el de ObjecType (o de
ninguno de los dos).

"ObjectType" no significa nada para mí, así que si no lo haz declarado en
ningún lado como tipo de usuario, o si no le pertenece a una referencia o no
le pertenece a VB dará el error.

"Node" sí tiene significado para mí. Puede ser un nodo de un TreeView, por
ejemplo. Así que VB debería entenderlo. Sin embargo, hay momentos en que no
lo hace.

Si no tienes el objeto TreeView u otro que tenga el objeto Node, VB no lo
encontrará y te dará el error (te hechará la culpa a tí diciendo que no
encontró "el tipo definido por el usuario".

Otra posibilidad, en ciertos objetos referenciados y que sí existen, es que
haya otra referencia a alguna otra cosa que no exista o con la que VB tenga
problemas. En ese caso, si entras al menú Proyecto/referencias, encontrarás
que hay una o más referencias que dirán "MISSING". Esto puede bloquear la
capacidad de VB para reconocer las cosas a las que sí tiene referencias
válidas, Al corregir el problema de las referencias "MISSING", borrándolas o
referenciándolas correctamente, según el caso, VB vuelve a tener la
capacidad de ver los tipos.


En resumen, "No se ha definido eltipo definido por el usuario", significa
varias cosas:

1. Hay una declaración de algo que no existe
Dim A As JWEKFWFWGIGWEFW
ó
Private Function ABC(n AS WEFWEDWE)

2. En Proyecto/Referencias, tienes la referencia adecuada, pero por
allí hay alguna que tiene MISSING, que no permite que funcione la que tienes
referenciada correctamente. (Esta es una manera típica en que se bloquea la
referencia VBA, que da ciertas funcionalidades como LEFT, MID, RIGHT, y
éstas fallan por esa razón)

3. Te falta una referencia en Proyecto/Referencias, debes
incorporarla.

4. Te falta el control que tiene el tipo de objeto al que estás
referenciando. Debes incorporarlo

5. Declaras una variable con un tipo definido por tí, como por
ejemplo DIM C AS COMPLEX, pero como te equivocaste, y en lugar de
escribir AS COMPLEX escribiste AS COMPLEZ, VB te da el error porque no sabe
lo que es COMPLEZ.

6. VB amaneció mal hoy. Salte y prueba de nuevo.

En fin, este error aparece porque VB no sabe a que te estás refiriendo
cuando declaras un tipo para una variable o un tipo de retorno de una
propiedad o una función, etc, y o lo sabe porque por alguna razón no lo
encuentra o porque lo escribiste mal.

0 new messages