Šī apmācība izskaidros, ko nozīmē VBA kompilācijas kļūda un kā tā rodas.
Pirms koda palaišanas VBA redaktors apkopo kodu. Tas būtībā nozīmē, ka VBA pārbauda jūsu kodu, lai pārliecinātos, ka ir izpildītas visas prasības, lai to pareizi palaistu - tā pārbaudīs, vai visi mainīgie ir deklarēti (ja izmantojat opciju Explicit, kas jums jādara!), Pārbaudiet, vai visas procedūras ir deklarētas , pārbaudiet cilpas un paziņojumus utt. Apkopojot kodu, VBA palīdz samazināt visas izpildlaika kļūdas.
(Plašāku informāciju par VBA kļūdām skatiet mūsu kļūdu apstrādes rokasgrāmatā)
Nedeklarētie mainīgie
Ja jūs nedeklarējat mainīgos, bet jūsu opcija Explicit ir ieslēgta moduļa augšdaļā un pēc tam palaižat makro, radīsies kompilēšanas kļūda.
Ja noklikšķināsit uz Labi, attiecīgā procedūra nonāks atkļūdošanas režīmā.
Vai arī pirms koda palaišanas varat piespiest koda apkopošanu.
Iekš Izvēlne, izvēlieties Atkļūdošana> Kompilēt projektu.
Kompilators atradīs visas apkopošanas kļūdas un attiecīgi iezīmēs pirmo, ko tas atradis.
Nedeklarētas procedūras
Ja kods attiecas uz procedūru, kas neeksistē, tiks parādīta arī kompilēšanas kļūda.
Piemēram:
1234 | Apakšzvana procedūra ()'tad kāds kods šeitZvaniet NextProcedureBeigu apakš |
Tomēr, ja procedūra - Nākamā procedūra nepastāv, tad radīsies kompilēšanas kļūda.
Nepareizs kodējums - paredzamās paziņojuma beigas
Ja izveidojat cilpu, izmantojot Par … Katru … Nākamo vai Ar… Beigt ar un aizmirst un Nākamais vai Beigt ar… jūs saņemsiet arī kompilācijas kļūdu.
123456 | Apakkompilācijas kļūda ()Dim wb kā darbgrāmataDim ws kā darblapaPar katru ws In wbMsgBox ws.NameBeigu apakš |
Tas pats notiks ar paziņojumu If, ja izlaidīs beigu If!
Trūkst atsauču
Ja izmantojat objektu bibliotēku, kas nav daļa no programmas Excel, bet mainīgo deklarācijā izmantojat bibliotēkas objektus, tiks parādīta arī kompilēšanas kļūda.
To var atrisināt ar Late Binding - deklarējot mainīgos par Objects; vai pievienojot atbilstošo Objektu bibliotēka uz projektu.
Iekš Izvēlne, izvēlieties Rīki> Atsauces un pievienojiet savam projektam attiecīgo objektu bibliotēku.