Sisällysluettelo
Yksi yleisimmistä virheistä, joita kohtaamme työskennellessämme VBA Excelissä on se, että käyttäjän määrittelemää tyyppiä ei ole määritelty. Tässä artikkelissa näytän, mistä tämä virhe johtuu ja miten se ratkaistaan.
Lataa harjoituskirja
Lataa tämä harjoituskirja, jotta voit harjoitella tätä artikkelia lukiessasi.
Käyttäjän määrittelemä tyyppi Not Defined.xlsm2 Syyt ja ratkaisut Käyttäjän määrittelemä tyyppi ei ole määritetty Excel VBA:ssa
On olemassa 2 tämän Excelissä usein esiintyvän virheen taustalla olevat tärkeimmät asiat VBA Tutustutaan niihin yksityiskohtaisesti ja selvitetään, miten ne voidaan ratkaista.
1. Kirjoitusvirhe muuttujia ilmoitettaessa
Tämä on suurin syy tähän virheeseen. Useimmiten virhe on seurausta "Käyttäjän määrittelemä tyyppi ei ole määritelty" johtuu kirjoitusvirheestä muuttujien ilmoittamisessa.
Katso seuraavia koodirivejä.
Sub User_Defined_Type_not_Defined() Dim Name As Strng Name = "ExcelWIKI" MsgBox Name End Sub
Jos suoritat tämän koodin, saat virheikkunan, jossa ilmoitetaan virheen olemassaolosta. "Käyttäjän määrittelemä tyyppi ei määritelty". Sen ohella löydät sinisellä korostetun koodin toisen rivin, johon kirjoitin "strng" tilalle "string" .
Toivottavasti ymmärrät asian. VBA ei tunnistanut muuttujan tyyppiä "strng" , siksi se piti sitä uutena muuttujatyyppinä ja luuli, että olet määritellyt sen jossain. Mutta kun se huomasi, ettet ole ilmoittanut sitä missään, se antoi virheen.
Siksi yksinkertaisia VBA koodit, jos kohtaat tämän virheen joka tapauksessa, tarkista ensin muuttujatyyppien oikeinkirjoitus.
2. Asianmukaisen viittauksen puute
Virheen taustalla on toinenkin syy, nimittäin asianmukaisen viittauksen puute. Joskus käytämme koodissamme joitakin objekteja, jotka tarvitsevat asianmukaisen viittauksen tiedostosta Visual Basic -viitekehys ...muutoin, VBA ei tunnista kohdetta.
Katso seuraavaa VBA koodi.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Dictionary Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Suorita tämä koodi. Saat saman vanhan virheilmoituksen. "Käyttäjän määrittelemä tyyppi ei ole määritelty", korostaen Sanakirjan objekti Tämä johtuu siitä, että VBA ei voinut tunnistaa Sanakirjan objekti ja pidettiin sitä käyttäjän määrittelemänä muuttujana, jota ei ole määritelty virheellisesti.
Nyt suurin kysymys on, miten tämä virhe ratkaistaan? Helppo. On olemassa 2 tapoja ratkaista tämä virhe.
⧪ Ratkaisu 1: Edellytysviittauksen tarkistaminen Visual Boxin viitekehyksestä
Tämä on fiksuin tapa ratkaista tämä ongelma. Mene osoitteeseen Työkalut> Viitteet painiketta Visual Basic nauha. Napsauta Viitteet .
Valintaikkuna nimeltä Viitteet aukeaa. Selaa ja etsi Microsoft Scripting Runtime (Tämä riippuu käyttämästäsi kohteesta.) Sanakirjan objekti tarvitsee Microsoft Scripting Runtime Kun objektia käytetään objektissa, se on tunnistettava. VBA koodi, sinun on tiedettävä sen edellytyksenä on tunnustettava. VBA. Lisätietoja saat tästä linkistä.). Tarkista se.
Palaa nyt takaisin ja suorita koodi. Et saa mitään virheitä. Koska VBA voi tunnistaa Sanakirjan objekti tällä kertaa.
⧪ Ratkaisu 2: Ilmoittaminen puhtaaksi objektiksi tietyn objektin sijasta.
On toinenkin tapa ratkaista tämä ongelma. Voit ilmoittaa objektin puhtaaksi objektiksi sen sijaan, että se olisi Sanakirjan objekti .
Huomaa seuraavat koodirivit.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Object Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Tässä olen ilmoittanut muuttujan MyDictionary yksinkertaisena objektina, ei Sanakirja. Jos suoritat tämän koodin, et saa mitään virheilmoitusta.