: Tipo definido polo usuario non definido en Excel VBA (2 solucións rápidas)

  • Comparte Isto
Hugh West

Un dos erros máis comúns aos que nos enfrontamos ao traballar con VBA en Excel é que o tipo definido polo usuario non está definido. Neste artigo mostrarei por que se produce este erro e como solucionalo.

Descargar libro de prácticas

Descargar este libro de prácticas para facer exercicio mentres fas están lendo este artigo.

Tipo definido polo usuario non definido.xlsm

2 Causas e solucións para Definido polo usuario Tipo non definido en Excel VBA

Hai 2 problemas principais detrás deste erro que se atopa con frecuencia en Excel VBA . Explorémolos en detalle e descubramos as formas de resolvelos.

1. Erro ortográfico ao declarar variables

Esta é a principal razón detrás deste erro. Na maioría das veces, o erro “Tipo definido polo usuario non definido” prodúcese debido a un erro ortográfico ao declarar variables.

Mira as seguintes liñas de códigos.

7692

Se executas este código, obterás unha caixa de erro que che notificará a presenza do erro “Tipo definido polo usuario non definido”. Xunto con ela, atoparás a segunda liña do código resaltada en azul, onde escribín “strng” en lugar de “cadea” .

Espero que entendas o punto. VBA non puido recoñecer o tipo de variable “strng” , por iso considerouno como un novo tipo de variable e pensou que a definiches nalgún lugar. Pero candodescubriu que non o declaraches en ningún lado, provocou un erro.

Polo tanto, mentres executas códigos VBA sinxelos, se atopas este erro de calquera xeito, comproba primeiro todas as ortografías dos teus tipos de variables.

2. Falta de referencias adecuadas

Esta é outra causa detrás deste erro. Iso é a falta de referencias adecuadas. Ás veces usamos algúns obxectos nos nosos códigos que necesitan referencias adecuadas desde a caixa de referencia de Visual Basic . En caso contrario, VBA non recoñece o obxecto.

Mira o seguinte código VBA .

8704

Executar este código. Recibirá o mesmo erro antigo "Tipo definido polo usuario non definido", resaltando o Obxecto dicionario . Isto débese a que VBA non puido recoñecer o obxecto dicionario e considerouno como unha variable definida polo usuario, que non se definiu por erro.

Agora a pregunta máis importante é como resolver este erro? Fácil. Hai 2 formas de resolver este erro.

⧪ Solución 1: comprobando a referencia de requisitos previos desde a caixa de referencia da caixa visual

Este é o a forma máis intelixente de resolver este problema. Vaia ás Ferramentas > Referencias da cinta Visual Basic . Fai clic en Referencias .

Abrirase un cadro de diálogo chamado Referencias . Desprácese e busque Microsoft Scripting Runtime (Isto depende do obxecto que estea a usar. O Dicionarioobject precisa Microsoft Scripting Runtime para ser recoñecido. Polo tanto, ao usar un obxecto nun código VBA , debes coñecer o seu requisito previo para ser recoñecido por VBA. Visita esta ligazón para obter máis información.). Comprobeo.

Agora volve e executa o código. Non terás erros. Porque VBA pode recoñecer o obxecto dicionario esta vez.

⧪ Solución 2: Declaralo como un obxecto puro en lugar de un obxecto específico

Hai outra forma de resolver este problema. Podes declarar o obxecto como un obxecto puro, en lugar de un Obxecto de dicionario .

Ten en conta as seguintes liñas de códigos.

3760

Aquí declarei a variable MyDictionary como un obxecto simple, non un Dicionario. Agora, se executas este código, non terás ningún erro.

Hugh West é un adestrador e analista de Excel altamente experimentado con máis de 10 anos de experiencia na industria. É Licenciado en Contabilidade e Finanzas e Máster en Administración de Empresas. Hugh ten unha paixón polo ensino e desenvolveu un enfoque docente único que é fácil de seguir e comprender. O seu coñecemento experto de Excel axudou a miles de estudantes e profesionais de todo o mundo a mellorar as súas habilidades e a destacar nas súas carreiras. A través do seu blog, Hugh comparte os seus coñecementos co mundo, ofrecendo titoriais de Excel gratuítos e formación en liña para axudar ás persoas e ás empresas a alcanzar todo o seu potencial.