Variablen a Konstanten an VBA

A VBA, wéi an all aner Programméierungssprooch, gi Variabelen a Konstanten benotzt fir Wäerter ze späicheren. Wéi den Numm et scho seet, kënne Variablen änneren, wärend Konstanten fixe Wäerter späicheren.

Zum Beispill, eng konstant Pi späichert de Wäert 3,14159265 ... D'Zuel "Pi" ännert sech net während der Ausféierung vum Programm, awer et ass ëmmer méi bequem fir sou e Wäert als Konstant ze späicheren.

Zur selwechter Zäit kënne mir d'Variabel benotzen sVAT_Taux den TVA-Saz op kaafte Wueren ze späicheren. Variabel Wäert sVAT_Taux ka variéieren jee no dem kaaft Produkt.

Datatypen

All Variabelen a Konstanten si vun engem bestëmmten Datetyp. D'Tabell hei drënner weist d'Datentypen déi a VBA benotzt ginn mat enger Beschreiwung a Palette vu méigleche Wäerter:

Datentyp GréisstdescriptionGamme vu Wäerter
Byte1 BytesPositiv ganz Zuelen; dacks fir binär Daten benotztvu 0 op 255
Boolschen2 BytesKann entweder richteg oder falsch sinnRichteg oder falsch
Ganzt2 BytesGanz Zuelen (kee Fraktiounsdeel)vun -32 op +768
laang4 BytesGrouss ganz Zuelen (keng Fraktiounsdeel)от -2 147 483 648 до +2 147 483 647
Single4 BytesSingle Präzisioun schwiewend Punkt Zuelvun -3.4e38 ze +3.4e38
double8 BytesDuebel Präzisioun schwiewend Punkt Zuelvun -1.8e308 ze +1.8e308
Währung8 BytesFloating Punkt Zuel, mat enger fixer Zuel vun Dezimalplazenот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
Datum8 BytesDatum an Zäit - Date vum Typ Datum gëtt duerch eng schwiewend Punktzuel duergestallt. Den ganzen Deel vun dëser Zuel dréckt den Datum aus, an de Fraktiounsdeel dréckt d'Zäit aus.vum 1. Januar 100 bis den 31. Dezember 9999
Objet4 BytesObjekt ReferenzAll Objet Referenz
Stringännert sechCharakter Set. De String Typ ka vu fixer oder variabeler Längt sinn. Méi allgemeng benotzt mat variabelen LängtFixed Längt - bis zu ongeféier 65 Zeechen. Variabel Längt - bis zu ongeféier 500 Milliarden Zeechen
Variantännert sechKann en Datum, e Float oder e Charakterstring enthalen. Dës Zort gëtt benotzt a Fäll wou et net am Viraus bekannt ass wéi eng Zort vun Donnéeën aginn ginn.Zuel - Duebel, String - String

Natierlech, andeems Dir d'Tabell hei uewen benotzt an de richtegen Datetyp auswielen, kënnt Dir d'Erënnerung méi wirtschaftlech benotzen (zum Beispill wielt den Datetyp Ganzt amplaz laang or Single amplaz double). Wéi och ëmmer, wann Dir méi kompakt Datentypen benotzt, musst Dir virsiichteg sinn datt Äre Code net probéiert disproportional grouss Wäerter an hinnen ze passen.

Verännerlechen a Konstanten erklären

Iwwersetzer Notiz: Schwätzen iwwer Variablen am VBA, ass et derwäert e méi ganz wichtege Punkt ze ernimmen. Wa mir eng Variabel deklaréieren awer kee Wäert derbäi ginn, da gëtt se mat engem Standardwäert initialiséiert:

• Text Strings sinn initialiséiert mat eidel Saiten;

• Zuelen - Wäert 0;

• Typ Verännerlechen Boolschen - falsch;

• daten - Dezember 30, 1899.

Ier eng Variabel oder Konstant ka benotzt ginn, muss se deklaréiert ginn. Fir dëst ze maachen, füügt déi folgend einfach Zeil vum Code op de Makro:

Dim Имя_Переменной As Тип_Данных

An der uewen Linn vum Code Variabel_numm ass den Numm vun der Variabel déi am Code benotzt gëtt, an Daten_Typ ass eng vun den Datentypen aus der Tabell e bësse méi fréi an dësem Artikel. Zum Beispill:

Dim sVAT_Rate As Single Dim i As Integer

Konstanten ginn ähnlech deklaréiert, awer wann Dir Konstanten deklaréiert, muss hire Wäert direkt uginn. Zum Beispill, wéi dëst:

Const iMaxCount = 5000 Const iMaxScore = 100

Et ass net néideg Variabelen an Excel ze deklaréieren. Par défaut hunn all aginn awer net deklaréiert Variabelen an Excel den Typ Variant a wäert kënnen souwuel numeresch an Text Wäert akzeptéieren.

Also kann de Programméierer déi nei Variabel zu all Moment benotzen (och wann se net deklaréiert gouf), an Excel behandelt se als Variabel vun Typ Variant. Wéi och ëmmer, et gi verschidde Grënn firwat dëst net sollt gemaach ginn:

  1. Gedächtnisverbrauch a Berechnungsgeschwindegkeet. Wann Dir keng Variabel mat enger Indikatioun vum Datetyp deklaréiert, da gëtt se als Standard op den Typ gesat Variant. Dësen Datentyp benotzt méi Erënnerung wéi aner Datentypen. E puer extra Bytes pro Variabel kléngen vläicht net wéi vill, awer an der Praxis kënnen Programmer Dausende vu Variablen hunn (besonnesch wann Dir mat Arrays schafft). Dofir, déi extra Erënnerung benotzt vun Verännerlechen wéi Variant, Verglach mat Variablen vun Typ Ganzt or Single, kënne bis zu engem bedeitende Betrag addéieren. Zousätzlech, Operatiounen mat Variablen vun Typ Variant gi vill méi lues ausgefouert wéi mat Variablen vun aneren Typen, respektiv eng extra dausend Variabelen vun Typ Variant kann d'Berechnungen däitlech verlangsamen.
  2. Präventioun vun Tippfehler an variabelen Nimm. Wann all Variablen deklaréiert sinn, da kann d'VBA Ausso benotzt ginn - Optioun explizit (mir wäerte méi spéit doriwwer schwätzen) fir all net deklaréiert Variabelen z'identifizéieren. Dëst eliminéiert d'Erscheinung vun engem Feeler am Programm als Resultat vun engem falsch geschriwwene Variabelnumm. Zum Beispill benotzt eng Variabel mam Numm sVAT_Taux, Dir kënnt en Tippfeeler maachen an, e Wäert fir dës Variabel ze ginn, schreift: "VATRate = 0,175". Et gëtt erwaart datt vun elo un d'Variabel sVAT_Taux soll de Wäert 0,175 enthalen - awer selbstverständlech net. Wann de Modus vun der obligatorescher Deklaratioun vun all benotzte Variablen aktivéiert ass, da wäert de VBA Compiler direkt e Feeler uginn, well et d'Variabel net fënnt VATR ënnert deenen ugekënnegt.
  3. Highlight Wäerter déi net mat der deklaréierter Aart vun enger Variabel passen. Wann Dir eng Variabel vun engem bestëmmten Typ deklaréiert a probéiert Donnéeën vun engem aneren Typ unzeginn, kritt Dir e Feeler, deen, wann et net korrigéiert gëtt, de Programm verursaache kann. Op den éischte Bléck kann dëst e gudde Grond schéngen fir Variabelen net ze deklaréieren, awer tatsächlech, wéi virdrun, stellt sech eraus datt eng vun de Variablen déi falsch Donnéeën kritt, déi se sollt kréien - sou vill besser! Soss, wann de Programm weider leeft, kënnen d'Resultater falsch an onerwaart sinn, an et wäert vill méi schwéier sinn d'Ursaach vun de Feeler ze fannen. Et ass och méiglech datt de Makro "erfollegräich" ausgefouert gëtt. Als Resultat gëtt de Feeler onnotéiert an d'Aarbecht geet weider mat falschen Donnéeën!

An dëser Hisiicht ass et wënschenswäert eng falsch Datentyp z'entdecken an esou Feeler am Code sou fréi wéi méiglech ze korrigéieren. Aus dëse Grënn ass et recommandéiert datt Dir all Variabelen deklaréiert wann Dir e VBA Makro schreift.

Optioun explizit

Betreiber Optioun explizit bewierkt datt all Verännerlechen, déi am VBA Code benotzt ginn, deklaréiert ginn, a markéiert all net deklaréiert Verännerlechen als Feeler während der Kompiléierung (virun der Ausféierung vum Code ufänkt). Dëse Bedreiwer anzewenden ass net schwéier - schreift just dës Linn ganz uewen op der VBA Datei:

Option Explicit

Wann Dir wëllt ëmmer asetzen Optioun explizit un der Spëtzt vun all nei VBA Modul geschaf, dëst kann automatesch gemaach ginn. Fir dëst ze maachen, musst Dir d'Optioun aktivéieren Verlaangt Variabel Deklaratioun an de VBA Editor Astellungen.

Dëst gëtt esou gemaach:

  • Vum Visual Basic Editor Menü, klickt Handwierksgeschir > Optiounen
  • Am Dialog deen erschéngt, öffnen d'Tab Redakter
  • Kontrolléiert d'Këscht Verlaangt Variabel Deklaratioun an dréckt op OK

Wann aktivéiert, de String Optioun explizit gëtt automatesch am Ufank vun all neie Modul erstallt agefouert.

Ëmfang vun Variablen a Konstanten

All deklaréiert Variabel oder Konstant huet säin eegene limitéierten Ëmfang, dat heescht e limitéierten Deel vum Programm an deem dës Variabel existéiert. Den Ëmfang hänkt dovun of, wou d'Deklaratioun vun der Variabel oder Konstant gemaach gouf. Huelt zum Beispill d'Variabel sVAT_Taux, déi an der Funktioun benotzt gëtt Total_Käschte. Déi folgend Tabell diskutéiert zwou Méiglechkeeten fir variabelen Ëmfang sVAT_Tauxan zwou verschiddene Positiounen am Modul deklaréiert:

Option Explizit Dim sVAT_Rate As Single Function Total_Cost() As Double ... End Function
Wann d'Variabel sVAT_Taux um Ufank vum Modul deklaréiert, da wäert den Ëmfang vun dëser Variabel de ganze Modul sinn (dh d'Variabel sVAT_Taux gëtt duerch all Prozeduren an dësem Modul unerkannt).

Dofir, wann an der Funktioun Total_Käschte verännerleche sVAT_Taux gëtt e Wäert zougewisen, da benotzt déi nächst Funktioun, déi am selwechte Modul ausgefouert gëtt, d'Variabel sVAT_Taux mat der selwechter Bedeitung.

Wéi och ëmmer, wann eng Funktioun an engem anere Modul genannt gëtt, dann ass d'Variabel dofir sVAT_Taux wäert net bekannt ginn.

Optioun Explizit Funktioun Total_Cost() As Double Dim sVAT_Rate As Single ... End Funktioun
Wann d'Variabel sVAT_Taux am Ufank vun der Funktioun deklaréiert Total_Käschte, da gëtt säin Ëmfang nëmmen op dës Funktioun limitéiert (dh bannent der Funktioun Total_Käschte, Dir kënnt d'Variabel benotzen sVAT_Taux, awer net dobaussen).

Wann Dir probéiert ze benotzen sVAT_Taux an enger anerer Prozedur wäert de VBA Compiler e Feeler mellen, well dës Variabel net ausserhalb vun der Funktioun deklaréiert gouf Total_Käschte (virausgesat datt de Bedreiwer benotzt gëtt Optioun explizit).

Am Beispill hei uewen ass d'Variabel um Modulniveau mat dem Schlësselwuert deklaréiert Sonn. Wéi och ëmmer, et kann néideg sinn datt deklaréiert Variabelen an anere Moduler benotzt kënne ginn. An esou Fäll, eng Variabel ze deklaréieren anstatt e Schlësselwuert Sonn Schlësselwuert muss benotzt ginn ëffentlech.

Iwwregens, fir eng Variabel um Modulniveau ze deklaréieren, amplaz vum Schlësselwuert Sonn Schlësselwuert ka benotzt ginn private, wat beweist datt dës Variabel nëmme fir den aktuelle Modul geduecht ass.

Dir kënnt och Schlësselwieder benotze fir Konstanten ze deklaréieren. ëffentlech и private, awer net amplaz vum Schlësselwuert Konst, zesumme mat et.

Déi folgend Beispiller weisen d'Benotzung vu Schlësselwieder ëffentlech и private op Variabelen a Konstanten applizéiert.

Optioun Explizit Public sVAT_Rate As Single Public Const iMax_Count = 5000 ...    
An dësem Beispill, de Schlësselwuert ëffentlech benotzt fir eng Variabel ze deklaréieren sVAT_Taux a konstanten iMax_Count. Den Ëmfang vun Elementer, déi op dës Manéier deklaréiert ginn, wäert de ganze aktuelle Projet sinn.

Dëst bedeit dat sVAT_Taux и iMax_Count wäert an all Projet Modul sinn ginn.

Optioun Explizit Privat sVAT_Rate As Single Private Const iMax_Count = 5000 ...    
An dësem Beispill, eng Variabel ze deklaréieren sVAT_Taux a konstanten iMax_Count Schlësselwuert benotzt private. Den Ëmfang vun dësen Elementer ass den aktuelle Modul.

Dëst bedeit dat sVAT_Taux и iMax_Count wäert an all Prozedure vum aktuelle Modul disponibel sinn, awer net fir Prozeduren an anere Moduler.

Hannerlooss eng Äntwert