Funktioner i visuelt grundsprog. Visual Basic Languages ​​matematiske funktioner

Næsten al programkoden for VBA-moduler er indeholdt i procedurer af to typer: Sub (underrutiner) og Funktion (funktioner). Hovedopgaven for en funktionsprocedure er at beregne en værdi og returnere den til det punkt, hvor funktionsproceduren kaldes.

Syntaks for funktionsprocedure:

Funktion Funktion_Navn(argumenter Som) Som

Funktionsnavn = Return_Value

Afslut funktion

Funktionsprocedurer kan bruges i en række forskellige udtryk.

Eksempel 1

For eksempel den enkleste procedure-funktion Funktion:

Funktion F1(x Som valuta) Som valuta

Funktion F1(x) kan bruges i yderligere beregninger (modulkode). En procedure af typen Funktion kan kun udføres ved at kalde den fra en anden procedure. For at gøre dette skal den kaldende procedure tildele navnet på denne F1(x) til en variabel.

Eksempel 2

For eksempel kan funktion F1(x) bruges i MySub()-proceduren ved at navngive variablen "y" F1(x).

Dim y As Single ‘Deklaration af variabel y

y = F1 (9) 'Bestem F1 (x) for værdien x=9

Debug.Print y ‘Udskriv værdier i vinduet Øjeblikkelig

Funktion F1 (x Som enkelt) Som enkelt

F1 = x^10 'Returnér værdien af ​​x til potensen 10

Her returnerer Funktion F1(x)=$x^(10)$ for værdien $ x=9$ værdien $3,486785E+09$ til den kaldende procedure MySub(). Hvis en funktionsreturværdi eller variabel, der bruges i en VBA-procedure, ikke har en erklæret datatype, vil standarddatatypen være Variant.

VBA bruger både funktionsprocedurer og indbyggede funktioner.

Indbyggede funktioner består af to dele: et navn (identifikator) og argumenter. Indbyggede funktioner er færdiglavede VBA-formler, der udfører bestemte handlinger på udtryk og returnerer en vis værdi på tidspunktet for deres opkald.

Funktioner returnerer en resultatværdi i stedet for deres navn, som bruges i yderligere beregninger. Typisk kræver funktioner argumenter, som er skrevet i parentes adskilt af kommaer. Men nogle funktioner kræver ikke argumenter. For eksempel returnerer funktionen Now(), som ikke kræver nogen argumenter, den aktuelle systemdato og -klokkeslæt. Funktioner kan bruges til at skabe nye udtryk eller funktioner.

Hvordan indsætter man en funktion i en programtekst? For at bruge en funktion i udtryk, skal du indtaste dens navn i en VBA-sætning. For at kalde en indbygget funktion, der ikke kræver argumenter, skal du blot indtaste dens navn (for eksempel Nu) i modulprogramkoden:

Sub MyDate()

Dæmp TD 'Deklarer en TD-variabel

TD = Nu 'Bestem den aktuelle systemdato og -klokkeslæt

Debug.Print TD ‘Udskriv værdier i vinduet Øjeblikkelig

For at kalde en funktion, der kræver indtastning af et eller flere argumenter, skal du indtaste dens navn i højre side af tildelingsoperatoren med parametrene (argumentværdier) indesluttet i parentes. For at kalde den indbyggede funktionslog (N) med én variabel N i en procedure af typen Sub, tildeles variablen Log_N navnet på funktionen Log (50) med en argumentværdi på 50.

Undernaturlig logaritme()

Dim LogN 'Erklær variablen LogN

Debug.Print LogN ‘Udskriv værdier i vinduet Øjeblikkelig

Note 1

Her returnerer den indbyggede funktion Log(N) for en argumentværdi på 50 værdien 3,91202300542815 på det tidspunkt, hvor Log(50) kaldes for den kaldende procedure "Sub Natural_logaritme()". En funktion kan kaldes enten ved hjælp af en separat VBA-sætning eller ved at placere dens navn med en liste over argumentværdier (parametre) i en formel eller et udtryk i et VBA-program. VBA bruger funktionsindlejring til at forkorte notation ved at tillade, at et funktionskald angives som et argument til en anden funktion. I dette tilfælde bruges returværdien af ​​den første funktion som et argument for den næste funktion.

VBA har et stort sæt indbyggede funktioner og rutiner, der gør programmeringen nemmere, som kan opdeles i følgende kategorier:

  • matematisk;
  • typekontrolfunktioner;
  • strengbehandlingsfunktioner;
  • formateringsfunktion;
  • formatkonverteringsfunktioner;
  • dato og klokkeslæt funktioner.

Matematiske funktioner

Matematiske funktioner omfatter:

  • Abs (x) - argumentets modul $x$;
  • Cos(x) - cosinus af argumentet $x$;
  • Exp(x) - hæver bunden af ​​den naturlige logaritme til potensen $x$;
  • Log(x) - naturlig logaritme af argumentet $x$;
  • Rnd - tilfældigt tal fra intervallet;
  • Sin(x) - sinus for argumentet $x$;
  • Sqr(x) - kvadratroden af ​​$x$;
  • Atn(x) - arktangens af $x$;
  • Tan(x) – tangens af $x$;
  • Sgn(x) – tegn på $x$.

Fix(x) og Int(x) begge funktioner kasserer brøkdelen af ​​et tal og returnerer en heltalsværdi. Forskellen mellem disse funktioner er for negative argumentværdier. Int(x) returnerer det nærmeste negative heltal mindre end eller lig med x, og Fix(x) returnerer det nærmeste negative heltal større end eller lig med x.

Typekontrolfunktioner

Her er de funktioner, der bestemmer, hvilken type en variabel er:

  • IsArray(x) – funktionen kontrollerer, om variablen er en matrix;
  • IsDate(x) bestemmer, om variablen er en dato;
  • IsError(x) bestemmer, om variablen er en fejlkode;
  • IsNull(x) bestemmer, om variablen er en tom værdi;
  • IsNumeric(x) bestemmer, om variablen er en numerisk værdi;
  • IsObject(x) bestemmer, om en variabel er et objekt.

Format funktion

Formateringsfunktionen returnerer en Variant-værdi (streng), der indeholder et udtryk, der er formateret i henhold til funktionssyntaksen:

Format(Udtryk[,Format [,Ugens første dag[,Årets første uge]]]),hvor:

  • Udtryk – et påkrævet argument (ethvert gyldigt udtryk – en kombination af nøgleord, operatorer, variabler og konstanter, hvis resultat er en streng, tal eller objekt);
  • Format er en valgfri parameter (ethvert gyldigt navngivet eller brugerdefineret formatudtryk).

Hvis et $-tegn tilføjes til funktionsnavnet, returnerer funktionen en værdi af typen String., derefter returnerer funktionen en værdi af typen String.

Når du opretter dit eget talformat, kan du bruge følgende tegn:

  • 0 – reserverer den digitale bitposition. Viser et ciffer eller nul. Hvis det tal, der formateres, har et ciffer på den cifferposition, hvor der er et 0 i formatstrengen, viser funktionen det ciffer, hvis ikke, så vises et nul på den position;
  • "#" - handlingen af ​​dette symbol ligner handlingen 0 med den eneste forskel, at ubetydelige nuller ikke vises;
  • . – reserverer placeringen af ​​decimalseparatoren, bestemmer hvor mange cifre der skal vises til venstre og højre for decimaltegnet;
  • % - reserverer den procentvise visning af et tal;
  • . – adskiller hundreder fra tusinder.

Formatkonverteringsfunktioner

Disse omfatter:

  • Val(streng) – returnerer de tal, der er indeholdt i strengen, som en numerisk værdi af den relevante type.
  • Str(tal) – returnerer en Variant-værdi (streng), der er en strengrepræsentation af et tal.

Ud over funktionerne Val og Str er der en række funktioner til konvertering af udtrykstyper.

Stringbehandlingsfunktioner

Blandt de mange funktioner er følgende:

  • Chr(kode) – konverterer ASCII-kode til en streng. For eksempel udfører Chr(10) en ny linje, Chr(13) udfører en vognretur;
  • Mid(streng, pos[,længde]) – returnerer en understreng af en streng, der indeholder det angivne antal tegn, hvor String er det strengudtryk, som understrengen er udtrukket fra;
  • Pos – placeringen af ​​tegnet i strengen, hvorfra den ønskede understreng begynder;
  • Længde – antal returnerede understrengtegn;
  • Len(streng) – returnerer antallet af tegn i en streng.

Tid og dato funktioner

Returner en variantværdi, der indeholder systemdatoen, aktuelt klokkeslæt osv. For eksempel returnerer funktionen Dato en værdi, der indeholder systemdatoen.

Procedurer og funktioner

Udtryk og operatører er råmaterialet til blokke, som programmer er bygget af, hvor procedurer og funktioner fungerer som blokke.

Procedurer og funktioner

I Visual Basic, som i mange andre programmeringssprog, er de fleste programmer skabt ud fra blokke – procedurer og funktioner. Al programkode er placeret i disse procedurer. Hvis der er behov for at løse et problem hvor som helst i programmet, kaldes proceduren. I Visual Basic kan du ikke indtaste kode mellem procedurer. Kode bør altid være inde i en procedure.

Lad os forstå begreberne og bestemme, hvad der vil blive kaldt en procedure og hvilken funktion.

Procedurer:

En procedure er en kodeblok, der vil blive udført, hver gang denne procedure kaldes. Hver procedure begynder med det reserverede ord Sub og slutter med End. Her er den generelle syntaks for proceduren:

[Privat | Offentlig | Ven ] Undernavn [(argliste)]

    

Slut Sub

Alt i firkantede parenteser er valgfrit. Exit Sub-erklæringen giver dig mulighed for at afslutte en procedure tidligt. Nogle gange er dette meget praktisk. Ordene Offentlig, Privat har samme betydning, som når man erklærer variable.

arglist ser sådan ud:

[Valgfrit ] varname[()]
[= standardværdi]

Lad os se på et eksempel på en procedure, der viser beskeden "Hello World!" på skærmen:

Privat Sub ShowMessage()
    Beskedboks "Hej verden!"
Slut Sub

Hvad kan du sige om denne procedure? Proceduren er af typen Privat, dvs. vil kun være tilgængelig fra koden for den nøjagtige formular (modul), hvor den er deklareret (husk typerne af variable deklarationer). Denne procedure indeholder ikke parametre, som de tomme parenteser fortæller os. Formålet er at vise Hello World beskeden på skærmen.

MsgBox er en indbygget Visual Basic-funktion, der viser en boks med en besked angivet som en parameter. De resterende parametre er valgfrie (der er 5 i alt). Du kan læse mere om MsgBox-funktionen.

Hvordan kalder man en procedure? For at gøre dette skal du blot skrive navnet på proceduren:

ShowMessage

Eller du kan gøre dette:

Opkald ShowMessage "mere visuel mulighed

Begge disse muligheder er absolut ækvivalente. Men for at kalde procedurer er det stadig bedre at bruge den anden mulighed.

Lad os nu ændre denne procedure og tilføje en parameter til den, hvis værdi vil blive udlæst af MsgBox-funktionen (i stedet for Hello World):

Privat Sub ShowMessage(besked som streng)
    MsgBox-meddelelse
Slut Sub

Nu, når du kalder en procedure, skal du angive en parameter:

Opkald ShowMessage ("Vores første procedure")

Resultatet af at udføre en sådan procedure vil være visningen af ​​meddelelsen: "Vores første procedure." Parentesen omkring parameteren er påkrævet, hvis procedurenavnet indledes med en Call-sætning. Hvis Call mangler, er der ingen grund til at sætte parenteser.

Lad os se nærmere på, hvad der sker, når vi kalder vores procedure. Efter at have stødt på en linje med et kald til vores procedure, kontrollerer Visual Basic, om denne procedure har brug for parametre. Efter at have sikret sig, at de er nødvendige (meddelelsesparameter), sender han strengen "Vores første procedure" til proceduren. De der. faktisk tildeler proceduren meddelelsesvariablen værdien "Vores første procedure". Nå, så kaldes MsgBox-funktionen og en besked vises på skærmen. Hvis antallet af parametre, der sendes, når en procedure kaldes, ikke stemmer overens med antallet af parametre i procedureerklæringen, genererer Visual Basic en fejl.

Så vi har ordnet procedurerne. Det er tid til at forstå funktionerne.

Funktioner:

En funktion er en kodeblok, der returnerer en værdi. Dette, og kun dette, adskiller funktioner fra procedurer. Generel funktionssyntaks:

[Offentlig | Privat | Ven ] Funktion funktions navn _
[(argliste)]
    [noget kode her]

    
    [der kan også være noget kode her]
    [funktionsnavn = udtryk]
Afslut funktion

Hvad betyder "vil returnere en værdi"? Overvej funktionen fra lektion 8:

Public Function MyFunc() Som byte
    MyFunc = 234
Afslut funktion

c = MyFunc()

Da vi talte om udtryk, sagde vi, at MyFunc er et udtryk med en værdi på 234. Altså. her returnerer MyFunc-funktionen værdien 234 (bytes). For at indstille denne værdi skal du indstille funktionsnavnet til et udtryk. I vores tilfælde bruges tallet 234 som udtryk.

Lad os se på et mere praktisk eksempel. Lad os skrive en funktion til at beregne kvadratet af et tal. Funktionen vil have 1 parameter af typen Heltal - tallet til kvadrat. Funktionen returnerer værdien af ​​kvadratet af parameteren. Returtype - Lang:

Public Function Square (nummer Så længe) Så længe
    Kvadrat = tal * tal
Afslut funktion

Du kan kalde funktionen sådan:

b = Kvadrat (5)

Eller du kan gøre dette ved at bruge vores procedure til at vise en meddelelse på skærmen:

ShowMessage Square (5)

Eller du kan gøre dette:

Firkant 5

I sidstnævnte tilfælde går den værdi, funktionen returneret, ingen steder hen, men selve funktionen vil blive udført sikkert. Bemærk fraværet af parenteser i det sidste opkald. Parentesen er valgfri her, i modsætning til de to foregående opkald. Der kræves parentes. (godt, det er forståeligt, som om Visual Basic, uden parenteser, ville have gættet, hvor parametrene er for ShowMessage og hvor for Square).

I næste lektion vil vi stifte bekendtskab med kontroller og skrive et lille program.

I denne del lærer du om de datatyper, der kan manipuleres af VBA, hvordan midlertidige data gemmes i VBA, hvordan man kombinerer variable og konstanter for at skabe nye værdier, og lærer hvordan man inddrager indbyggede funktioner i udtryk.

Laboratoriearbejde nr. 3. Oversigt over VB datatyper. Variabler og

konstanter. Datatypekompatibilitet. Opgaveoperatør. Aritmetiske og logiske operatorer. Indbyggede funktioner

Formålet med lektionen: Kend datatyper. Kunne oprette variabler. Kunne indstille datatyper til variable. Kunne oprette navngivne konstanter. Kend omfanget

variabler og konstanter. Kend type konvertering. Ved, hvordan man bruger opgaveoperatøren. Kende aritmetiske og logiske operationer. Ved, hvordan man bruger strengsammenkædning. Kunne bruge VBA indbyggede funktioner. Materiale til lektionen: MS Excel 2003.

Oversigt over datatyperVisuelGrundlæggende (VB)

Før du lærer om variabler, bør du forstå, hvordan VBA gemmer forskellige typer information. VBA opdeler ligesom de fleste andre programmeringssystemer de data, den behandler, i tal, datoer, tekst og andre typer. Datatype(data type) er et udtryk, der refererer til visse typer data, som VBA gemmer og kan manipulere. I tabel Figur 9 opsummerer VBA-datatyper, viser hvor meget hukommelse hver type optager, beskriver kort datatyperne og angiver rækken af ​​værdier, som en given type kan gemme.

Tabel 9– VBA datatyper

Indtast navn

Størrelse indbytes

Positive heltal fra 0 til 255

Heltal fra -32768 til 32767

Lange heltal fra -2147483648 til 2147483647

Reelle tal af almindelig præcision med

flydende komma.

Negative tal:

fra -3.402823E38 til -1.401298E-45.

Positive tal:

fra 1.401298E-45 til 3.402823E38

Dobbelt præcision reelle tal med

flydende komma.

Negative tal:

fra -1,79769313486232E308 til

4.94065645841247E-324.

Positive tal:

fra 4.94065645841247E-324 til

1.79769313486232E308

Tal med op til 15 cifre før decimaltegnet og 4 cifre efter det (valutaenheder). Fra -922337203685477.5808 til 922337203685477.5807

At gemme logiske værdier; kan kun indeholde True eller False værdier

Indtast navn

Størrelse indbytes

Beskrivelse og værdiområde

For at gemme en kombination af dato og klokkeslæt. Datointervallet kan være fra 1. januar 100 til 31. december 9999. Tidsrum fra 00:00:00 til 23:59:59

String (streng med variabel længde)

10 bytes + Bruges til at gemme tekst. Kan strenglængde variere fra 0 tegn til (ca.) 2 milliarder tegn

Snor

fast længde)

Længde Bruges til at gemme tekst. Can-strenge (en indeholder fra én til (ca.) 65400 bytes pr. tegn)

16 byte + 1 byte/tegn

Varianttypen kan gemme enhver anden datatype. Området for Variantdata afhænger af de faktiske data, der lagres. I tilfælde af tekst svarer intervallet til strengtypen; i tilfælde af tal er intervallet det samme som for Double-typen

Bruges til at få adgang til ethvert objekt, der genkendes af VBA. Gemmer adressen på et objekt i hukommelsen

I tabel 9 stødte du på en datarepræsentation kaldet eksponentiel notation(videnskabelig notation), som bruges til at vise meget store og meget små tal i et kompakt format på eksterne enheder (skærm, printer osv.). I eksponentiel notation skrives værdier uden foranstående eller efterfølgende nuller og har kun et ciffer til venstre for decimalen. Tallet ganges til en vis grad med 10 for at vise, hvor decimalen faktisk er.

VBA har seks forskellige numeriske datatyper: Byte, Heltal, Lang, Enkelt, Dobbelt Og betalingsmiddel. Numeriske datatyper bruges til at gemme (og manipulere) tal i forskellige formater, afhængigt af den specifikke type.

Typisk "tager" et VBA-program (som ethvert andet program) beslutninger ved at kontrollere, om forskellige forhold er sande. For at gøre det nemmere at teste forhold og sikre, at resultaterne af sådanne tests gemmes, leverer VBA en boolsk datatype. booleske værdier Rigtigt Og Falsk hedder Boolean(Boolean) værdier. Deres navn er forbundet med navnet på matematikeren, der udviklede systemet for matematisk logik. VBA Boolean-datatypen kaldes også Boolean. VBA Boolean-typen kræver to bytes hukommelse og kan have en af ​​to værdier: Rigtigt eller Falsk. Hvis du viser type Boolean på skærmen konverterer VBA det automatisk til en streng, der indeholder enten ordet Rigtigt, eller Falsk. Booleske værdier opnås som

resultatet af sammenligningsoperationen.

VBA bruger type Dato til lagring af datoer og tidspunkter. Ingen grund til at bekymre sig om, hvordan VBA gemmer typedata Dato, – du kan blot vise, gemme eller manipulere datoer; VBA håndterer automatisk alle detaljer om konvertering af et sekventielt nummer til år, måned, dag og tid. VBA type Dato er en type på hinanden følgende datoer(seriel Datoer). På hinanden følgende datoer gemmer datoen som et antal dage fra en given startdato. Basisdato for VBA-type Dato er 30. december 1899. VBA bruger negative tal til at repræsentere datoer før 30/12/1899 og positive tal til at repræsentere datoer efter 30/12/1899. Tallet 0 repræsenterer selve datoen, 30/12/1899. Ifølge denne ordning skrives 1. januar 1900 som tallet 2 (1. januar 1990 er 2 dage efter 30. december 1899), men tallet –2 er datoen 28. december 1899 (to dage før 30. december 1899). ). For at bekræfte dette, skriv en simpel procedure.

Øvelse 1. Skriv en procedure, der udskriver en datomeddelelse.

For det:

Skriv en procedure (liste 3):

Fortegnelse 3 ProcedureDatoTest

1 underdatotest()

2 Dim d As Dato 3

Som et resultat af denne procedure vil basisdatoen blive vist på skærmen (fig. 15).

Ris. 15 I en sekventiel datoværdi er heltalsdelen (tallene til venstre for decimalen) det samlede antal dage fra basisdatoen. VBA-sekventiel dato kan have cifre til højre for decimalen; disse tal angiver tidspunktet på dagen som en del af dagen. En time er 1/24 af en dag (ca. 0,0416. På samme måde er et minut 1/1440 af en dag, og en anden er 1/86.400 af en dag. Du kan trække en dato fra en anden, lægge til en dato eller trække tal fra for at ændre dets værdier. Hvis du for eksempel skal bestemme antallet af dage mellem to datoer, skal du blot trække den tidligere dato fra den senere. Fordi disse er værdier som f.eks. Dato, VBA "ved", at formålet med beregningen er at opnå forskellen i dage mellem disse to datoer. Ligeledes, hvis du skal bestemme en dato 60 dage efter en given dato, skal du blot tilføje 60 til den dato.

VBA har flere indbyggede procedurer (beskrevet i dette afsnit) til separat at udtrække år, måned, dag, time, minut og sekund fra en variabel som f.eks. Dato.

Alle tekstdata gemt i et VBA-program kaldes linjer(strenge). Strenge i VBA gemmes ved hjælp af datatype Snor. Strenge får deres navn, fordi tekstdata normalt behandles som strenge af tegn. Strengen kan indeholde alle typer teksttegn: alfabetiske bogstaver, tal, tegnsætningstegn eller forskellige symboler. Der er to kategorier af strenge: strenge med variabel længde, som vokser eller krymper i størrelse, og strenge med fast længde, hvis størrelse altid forbliver den samme. Alle strenge i VBA er strenge med variabel længde, medmindre du angiver en fast længde. Det meste brugerinput (i dialogbokse, regnearksceller) er strengdata. Derudover, da du kun kan vise tekst på skærmen, skal alle andre datatyper konverteres til strengdata, før du kan vise dem på skærmen. Mange VBA indbyggede procedurer (som Msgbox) bruge strengdata i alle eller nogle af deres argumenter.VBA giver flere operatører til sammenkædning(sammenkæde), det vil sige at slutte sig sammen og sammenligne strenge. VBA har også flere indbyggede rutiner til at hjælpe dig med at udtrække understrenge fra længere strenge, finde tegn eller ord i en streng, ændre store og små bogstaver i en streng og så videre. Denne del beskriver VBA-strengoperatorer og procedurer til at manipulere VBA-strenge.

Datatype Variant er en speciel datatype, der kan gemme enhver af de typer, der er angivet i tabellen. 9, undtagen type Objekt. VBA bruger type Variant for alle variabler, medmindre du udtrykkeligt erklærer variablens type, som beskrevet senere i dette afsnit. Datatype Variant påtage sig karakteristika af en bestemt type, som de har i øjeblikket. For eksempel hvis datatype Variant indeholde strengdata Variant accepterer karakteristika af typen String. Hvis datatype Variant indeholde numeriske data, Variant tager karakteristika af en eller anden numerisk type, normalt - Dobbelt, selvom typer Variant kan også have typekarakteristika Heltal, Lang, Enkelt eller betalingsmiddel. Selvom typerne Variant Praktiske og tager noget af arbejdet med at skrive procedurer, de kræver mere hukommelse end nogen anden datatype undtagen store strenge. Derudover matematiske operationer og sammenligningsoperationer på datatype Variant er langsommere end lignende operationer på nogen anden type data. Generelt bør du undgå at bruge variabler Variant: hvis du vil stole på typevariabler Variant, kan du udvikle en vane med sjusket programmering og finde det svært at finde og rette fejl i programmer.

Variabler

Variabel(variabel) er det navn, programmøren giver til området

computerhukommelse, der bruges til at gemme en eller anden form for data. VBA-variabler kan gemme enhver af de datatyper, der er angivet i tabellen. 9.

Identifikator(identifikator) er det navn, du giver til elementer i procedurer og moduler, du opretter, såsom variabler. Udtrykket identifikator er baseret på det faktum, at de navne, du opretter, identificerer specifikke hukommelsessteder (i tilfælde af et variabelnavn), grupper af sætninger (i tilfælde af et makro- eller procedurenavn) eller andre programelementer.

Variable navne ikke "følsom" over for registertilstand(ikke sag- følsom), det vil sige, om variabelnavnet er skrevet med store eller store bogstaver, er ligegyldigt.

Den nemmeste måde at oprette en variabel på er at bruge den i en VBA-sætning. VBA opretter en variabel og reserverer hukommelse til variablens hukommelsesplacering første gang den variabel vises i en sætning (normalt en sætning, der gemmer en dataværdi i en variabel).

Lagring af en dataværdi i en variabel kaldes tildeling til en variabel(tildeling det variabel eller fremstilling en opgave). Tildeling udføres ved hjælp af tildelingsoperatoren, repræsenteret ved lighedstegnet (=). Følgende linje er et eksempel på tildeling af en værdi til en variabel:

Denne sætning gemmer den numeriske værdi 25 på den hukommelsesplacering, der er angivet af variabelnavnet MyVar.

Oprettelse af en variabel ved at bruge den i en sætning kaldes implicit variabel erklæring(implicit variabel erklæring). Ved at bruge en variabel i en sætning fortæller (erklærer) du implicit VBA, at du vil oprette denne variabel. Alle variabler, som VBA opretter ved implicit variabeldeklaration, har en datatype Variant. Implicit variabel erklæring er også kendt som variabel erklæring "i farten"(- det- flyve).

Implicitte variabeldeklarationer er praktiske, men har potentielle problemer. For eksempel når du har en variabel navngivet MyVar og du vil lave en fejl i navnet senere, når du skriver Mvar. Afhængigt af hvor det forkerte variabelnavn vises i din kode, kan VBA give en runtime fejl eller blot oprette en ny variabel. Hvis VBA opretter en ny variabel, kan du have problemer, som er meget svære at opdage.

Af disse og andre grunde giver VBA dig muligheden for at gøre eksplicit(eksplicit) deklaration af variable.

Brug VBA-sætningen for eksplicit at erklære variabler Svag med følgende syntaks:

Svag navn1 [, navn2 ]

navnN er enhver gyldig variabelidentifikator. Alle de variabler, du opretter med denne form for søgeordet Svag, er variable

type Variant.

En variabel kan kun erklæres én gang i en separat procedure eller modul. Fordi Dim-sætningen kommer før alle udsagn, der rent faktisk bruger variablen, kan du placere den hvor som helst i proceduren. I programmeringspraksis er det en god tommelfingerregel at samle alle eksplicitte variabeldeklarationer ét sted i begyndelsen af ​​en procedure.

Opgave 2. Rediger proceduren Hej Excel fra den foregående del ved hjælp af en eksplicit variabeldefinition.

For det:

b ændre proceduren Hej Excel (liste 4):

Fortegnelse 4 ProcedureHej Excel

1 Sub HelloExcel()

2 Dim HelloMsg " variabel for MsgBox 3

Operatør Svag (på linje 2) i liste 4 erklærer en variabel Hej Msg og reserverer et hukommelsesområde til det (i denne underrutine Hej Msg er en variabel af typen Variant). Linje 2 indeholder en sidste kommentar, der angiver formålet med denne variabel. Linje 4 tildeler en variabel Hej Msg linjer "Hej,Excel!" . Dernæst (på linje 5) bruges HelloMsg-variablen som et af argumenterne til proceduren MsgBox. Fungere MsgBox viser den samme beskedboks som før. Selvom MsgBox modtager nu sit første argument fra en variabel, denne variabel indeholder den samme strenginformation, som tidligere (i oversigterne i den forrige del) blev skrevet direkte ind i operatoren MsgBox.

Alle variabler i VBA, uanset om de er erklæret implicit eller eksplicit, er Varianter, medmindre du angiver variablens type i den sætning, der erklærer den. Til annoncering skrevet variabel og dens type ved hjælp af operatoren Svag tilføje nøgleordet As efter variablen, og indtast derefter navnet på datatypen for den pågældende variabel. Her er den generelle syntaks for brug af operatoren Svag når du erklærer indtastede variabler:

Svag varname [, varnavn2 ]

varnavnN repræsenterer ethvert gyldigt VBA-variabelnavn, en typeN – nogen af ​​VBA-datatypenavnene.

Når først en indtastet variabel er erklæret, uanset om variablen er erklæret eksplicit eller implicit, og hvordan typen er specificeret, bevarer denne variabel den samme type, så længe den eksisterer. Du kan ikke omdeklarere en variabel eller omdefinere dens type.

Med en implicit erklæring kan du også angive typen af ​​variablen ved at tilføje

specialtegn kaldet type definition symbol(type- definition Karakter), til slutningen af ​​variabelnavnet. I tabel Figur 10 viser VBA-typedefinitionssymbolerne og de typer, de repræsenterer. Tabel 10– Typedefinitionssymboler

Type

Definition symbol

Type

Symbol definitioner

HeltalLang

betalingsmiddelDobbelt

Typedefinitionstegn kan kun vises i slutningen af ​​et variabelnavn. Selvom du bør vide, hvad typedefinitionssymboler er, og hvordan de bruges, behøver du sjældent at bruge dem – det er meget nemmere og klarere at bruge Dim-sætningen med nøgleordet As. De fleste VBA-programmører bruger ikke typedefinitionssymboler.

Opgave 3. Rediger proceduren Hej Excel fra opgave 3 ved at bruge definitionen af ​​en indtastet variabel.

For det:

b ændre proceduren Hej Excel (liste 5):

Fortegnelse 5 ProcedureHej Excel

1 Sub HelloExcel()

2 Dim HelloMsg As String 3

    HelloMsg = "Hej Excel!"

    Title$ = "Mit første program"

    MsgBox Hej Msg, Titel$

Denne version af proceduren Hej Excel fungerer stort set det samme som de foregående. Linje 1 indeholder procedureerklæringen. På linje 2 redegørelsen Svag erklærer eksplicit en variabel Hej Msg. Siden operatøren Svag omfatter nøgleord Som og skriv navn Snor, variabel Hej Msg har type Snor. Linje 4 tildeler meddelelsesteksten til en strengvariabel Hej Msg. Linje 5 erklærer implicit en variabel Titel$ og tildeler samtidig beskedboksens titeltekst til variablen. Fordi variabelnavnet Titel$ slutter med et typedefinitionstegn for en streng, denne variabel er også af typen String. Til sidst bruger linje 6 operatoren MsgBox for at vise en beskedboks; i denne erklæring er både beskedteksten og vinduets titellinje variable: Hej Msg Og Titel$, henholdsvis.

Når du har tilføjet et typedefinitionssymbol til en variabel, skal du inkludere et typedefinitionssymbol, hver gang du bruger variabelnavnet.

Uanset om variabler af typen er deklareret Snor ved hjælp af operatøren Svag eller ved at tilføje typedefinitionstegnet $, er de strengvariabler, du opretter, strenge med variabel længde som standard.

Strengvariabler med variabel længde ændrer længde afhængigt af længden af ​​strengen, der lagres af variablen. Nogle gange skal du måske bruge linjen fast længde(fast- længde). Fast længde strenge har altid samme længde. Den følgende linje viser den generelle syntaks for at oprette en streng med fast længde:

Svag varnavn Som streng * N

varnavn er et hvilket som helst gyldigt variabelnavn, en N – er et vilkårligt tal fra 1 til 65400 tegn

Omfang: Variabel tilgængelighed

Semester omfang(omfang) refererer til omfanget af en VBA-procedure eller -modul, hvor en given variabel, procedure eller anden identifikator er tilgængelig. Denne del beskriver to grundlæggende niveauer af omfang: proceduremæssigt og modulært. Variabler, procedurer og identifikatorer, der kun er tilgængelige inden for en procedure, har omfang på procedureniveau, og dem, der er tilgængelige for alle procedurer i et modul, har modulniveau.

En variabel erklæret i en procedure er kun tilgængelig via denne procedure. For eksempel variabel Hej Msg fra linje 2 på liste 5, er kun tilgængelig i proceduren Hej Excel; ingen anden procedure har adgang til denne variabel.

Derfor siger de, at variablen Hej Msg Det har rækkevidde på procedureniveau(procedure- niveau omfang). Faktisk variablen Hej Msg eksisterer kun, mens VBA rent faktisk udfører proceduren Hej Excel.

Opgave 4. Opret to procedurer, hvis omfang er variabler på procedureniveau.

For det:

b indtast to afsluttede procedurer (liste 6):

Fortegnelse 6 ProcedureHej Excel

1 Sub HelloExcel()

2 Dim HelloMsg As String 3

    HelloMsg = "Hej Excel!"

    MsgBox HelloMsg, "Mit første program"

8 Sub HelloDave()

9 Dim HelloMsg As String 10

    HelloMsg = "Goddag, Excel!"

    MsgBox Hej Msg, "En anden beskedboks"

Linje 1-6 indeholder samme procedure Hej Excel fra liste 4, som fungerer nøjagtigt det samme. Der er tilføjet en procedure til modulet Hej Dave, som begynder på linje 8 i liste 6. Fremgangsmåde Hej Dave fungerer på samme måde som proceduren Hej Excel, den viser bare en anden tekstmeddelelse og titel i dialogboksen. På linje 2 og 9 bruger begge procedurer operatøren Svag at erklære lokale variabler med navnet Hej Msg.

Nogle gange er det nødvendigt for flere procedurer at have adgang til den samme variabel. Det er normalt mere effektivt at beregne en værdi én gang, gemme den i en variabel og derefter bruge den variabel i flere procedurer end at beregne den samme værdi igen og igen.

VBA giver dig mulighed for at erklære variabler, der er tilgængelige for flere procedurer. Når en variabel er tilgængelig for alle procedurer i et modul, siges den variabel at have omfang modulært niveau(modul niveau). VBA begrænser omfanget af en variabel på modulniveau til det modul, hvori variablen er erklæret (VBA giver måder til at udvide omfanget af en variabel yderligere; disse metoder beskrives herefter).

For at gøre en variabel tilgængelig for alle procedurer i et specifikt modul skal du placere sætningen Svag for det i begyndelsen af ​​modulet før eventuelle procedureerklæringer.

Øvelse 1

Opret to procedurer og en variabel erklæring på enkelt modulniveau (flyt sætningen til linje 1 Svag med variabel Hej Msg fjernelse af linje 2 og 9 fra liste 6).

Variabelnavnet skal være unikt inden for sit omfang. Det er dog muligt at have variabler med samme navn på forskellige omfangsniveauer. Når variabler har samme navn, men forskellige omfang, bruger VBA variablen med mest lokal(lokal) omfang.

Kræver eksplicit deklaration af variabler

Selvom implicit variabeldeklaration (erklære variabler blot ved at bruge dem) er praktisk, har det nogle problemer. Når variable er deklareret implicit, er der risiko for utilsigtet at oprette en ny variabel, når du faktisk skulle bruge en eksisterende, eller bruge en eksisterende variabel, når brugeren har til hensigt at oprette en ny. Begge disse situationer fører til fejl i koden, som er meget svære at spore.

For at gøre det lettere at opdage fejl relateret til implicitte variabeldeklarationer til enhver tid, giver VBA kommandoen MulighedEksplicit. Ved brug af MulighedEksplicit VBA kræver, at alle variabler deklareres (ved hjælp af operatoren Svag), før du bruger dem i modulet.

For at indstille den tilstand, hvor VBA kræver eksplicitte erklæringer for alle variabler i et modul, skal du tilføje kommandoen MulighedEksplicit til modulerklæringsområdet, det vil sige til begyndelsen af ​​modulet før eventuelle variabel- eller procedureerklæringer. Kommandoer som MulighedEksplicit, hedder compiler direktiver(compiler direktiver).

Hold MulighedEksplicit påvirker kun det modul, hvori det vises. Hvis projektet, der indeholder dette modul, også indeholder andre moduler, påvirkes de ikke af kommandoen MulighedEksplicit. Du skal inkludere kommandoen Option Explicit i hvert modul, der kræver eksplicitte variabeldeklarationer.

Siden inklusion MulighedEksplicit i alle moduler er meget nyttig, VB Editor giver en måde at automatisk inkludere denne kommando i hvert nyt modul, når du opretter det. For at VB Editor kan tilføje kommandoen MulighedEksplicit Følg disse trin for hvert nyt modul:

ь vælg en kommando Værktøjer/ Muligheder (Service/Optioner); VB editor viser dialogboksen Muligheder;

ь klik på fanen Redaktør (Redaktør) for at vise redigeringsmuligheder, hvis det er nødvendigt;

ь marker afkrydsningsfeltet Kræve Variabel Erklæring (Eksplicit beskrivelse af variabler);

ь vælg Okay. VB editor lukker dialogboksen Muligheder.

Øvelse 2

Indstil kommandoen til automatisk at aktivere Mulighed Eksplicit ind i hvert nyt modul, når det oprettes.

Konstanter

Konstant(konstant) er en værdi i et VBA-program, der ikke ændres. Eksemplerne på procedurer, der allerede er givet ovenfor, bruger strengkonstanter som "Hej,Excel!" Og "Mit første program". Konstanter som dem kaldes bogstavelige konstanter(bogstavelig konstanter), fordi den bogstavelige værdi skrives direkte til koden.

Du kan også skrive bogstavelige numeriske konstanter og datoer i VBA-kode; eksempler på numeriske bogstavelige konstanter omfatter tal 25 , 3.14 . Eksempler på bogstavelige datokonstanter omfatter datoer #12/31/96# eller #28. oktober 1997#(Du lærer mere om at skrive datokonstanter senere i denne del).

VBA giver dig mulighed for at oprette navngivne konstanter(som hedder konstanter). En navngiven konstant har ligesom en variabel et navn; dette navn repræsenterer en specifik uforanderlig værdi. Men i modsætning til en variabel ændres værdien af ​​en navngiven konstant aldrig. Den følgende linje viser den generelle syntaks til at erklære navngivne konstanter:

Konst navn = værdiel [operatør navn2… ] _

[, patheZ =værdi3 [operatør navn4 ] … ]

navnN repræsenterer enhver gyldig identifikator, værdiN – enhver dataværdi: numerisk, streng eller dato, en operatør – en aritmetisk eller sammenligningsoperation mellem to navne på tidligere beskrevne konstanter. Følgende linjer viser flere navngivne konstanterklæringer: Const Pi = 3.14, tekst = "Hej Excel!"

Konst Pi2 = 2*Pi

Omfang af konstanter

Som med variabler kan du deklarere navngivne konstanter i procedurer eller i deklarationsområdet i begyndelsen af ​​et modul. En konstant erklæret i en procedure har proceduremæssigt omfang, mens en konstant erklæret i et moduls deklarationsomfang har modulært omfang. Navngivne konstanter følger de samme omfangsregler som variabler.

At skrive bogstavelige konstanter

Når du skriver bogstavelige strengkonstanter i VBA-kode, skal du følge disse regler:

ь strengkonstanter skal være omgivet af dobbelte anførselstegn (");

ь er en tom strengkonstant (kaldet nul linjenul snor eller tom snor) er angivet med to dobbelte anførselstegn uden noget mellem dem ("");

b Strengkonstanten skal alle være på samme linje.

Når du skriver bogstavelige numeriske konstanter i VBA-kode, skal du følge disse regler:

ь numeriske konstanter må kun bestå af numeriske tegn fra 0 til 9;

b en numerisk konstant kan begynde med et (–) tegn og kan indeholde et decimaltegn;

b Du kan bruge eksponentiel notation til numeriske konstanter.

VBA genkender datokonstanter i et hvilket som helst af flere forskellige formater; Du skal placere alle datokonstanter mellem pundtegn (#). De følgende linjer viser nogle af de datokonstantformater, som VBA genkender: #2-5-97 21:17:34# #5. februar 1997 9:17:34pm# #Mag-31-97# #15. april 1997#

Uanset hvilke af følgende formater en literal konstant af typen Dato er skrevet i, omformaterer VBA konstanten (når indsættelsespunktet fjernes fra linjen efter at have skrevet konstanten) for at passe til et af følgende to formater, afhængigt af om Datokonstanten indeholder information om tid: #2/5/1997 9:17:34 PM# #2/5/1997# Der er kun to korrekte boolske konstanter: Sand og Falsk.

Angivelse af en konstant type

Når du erklærer en navngiven konstant eller bruger en bogstavelig konstant, "tror" VBA, at værdien repræsenteret af denne konstant har

den datatype, der bedst matcher det udtryk, der er tildelt konstanten.

I VBA kan du indstille typen af ​​en konstant. Den generelle syntaks til at erklære en indtastet konstant er:

Konst navn Som type = værdi[, navn Som type = værdi]

navn er et hvilket som helst gyldigt konstant navn, type – navnet på enhver VBA-datatype og værdi – den værdi, du tildeler konstanten.

Den følgende linje illustrerer den korrekte erklæring af en konstant med en bestemt type:

Konst Pi som dobbelt = 3,14

Indenrigskonstanter

VBA giver flere indre konstanter(iboende konstanter), også kaldet foruddefinerede konstanter(foruddefineret konstanter). En intern konstant er en navngiven konstant, der blev defineret af VBA-udviklerne. Interne konstanter defineret af VBA starter alle med bogstaver vb for at angive, at de er defineret af sproget Visual Basic for Applications (eller Visual Basic). For eksempel konstanter Kun vbOK, vbOKAnnuller er defineret af VBA. Interne konstanter i Excel 2002 begynder med bogstaver xl for at gøre det klart, at de er defineret af Excel. Takket være interne konstanter er det nemmere at bruge nogle af VBAs indbyggede procedurer, som f.eks. MsgBox, som du allerede kender til, og operatøren Inputboks, som diskuteres senere i denne del.

Vis meddelelsesvinduer. Modtagelse af data fra brugeren

At modtage data fra brugeren, gemme dem i en variabel og vise resultaterne af handlinger udført på det er de grundlæggende elementer, der er nødvendige for at skrive interaktive procedurer. Interaktiv(interaktive) procedure er en procedure, der udveksler information med brugeren, det vil sige, at proceduren interagerer med brugeren ved at vise meddelelser og modtage input.

Fungere MsgBox visning af en beskedboks har følgende syntaks:

MsgBox(Hurtig [, Knapper ] [, Titel ] [, Hjælpefil , Sammenhæng ])

argument Hurtig MsgBox viser denne linje i en dialogboks; skal altid give et argument Hurtig, da dette er påkrævet argument(påkrævet argument). Argument Knapper (valgfrit argument), er et numerisk udtryk, der bestemmer de knapper og meddelelser, der vises i dialogboksen. Argument Titel repræsenterer enhver strengværdi (bogstavelig, konstant eller variabel). MsgBoxTitel, VBA vises i titellinjen i dialogboksen MsgBox ord " MicrosoftExcel" . Argument Hjælpefil – hjælpefil, Sammenhæng – afsnittet i hjælpefilen. Meddelelsesteksten kan sættes i parentes, men parentes er valgfri, når funktionen MsgBox

bruges som operatør.

Data indtastet af brugeren kaldes inputdata(input). Brug funktionen for at modtage input fra brugeren af ​​en procedure Inputboks. Fungere(fungere) er en speciel type VBA-procedure, der returnerer en værdi. Fungere Inputboks viser en dialogboks med tekst, der beder brugeren om at indtaste en værdi, og en tekstboks til at indtaste denne værdi. Dialogboksen vises Inputboks, indeholder også kommandoknapper Okay Og Afbestille.

Fungere Inputboks har følgende syntaks:

stringvar=InputBoks( Hurtig[, Titel] [, Standard] [, XPos] [, YPos] _

[, Hjælpefil, Sammenhæng])

Her stringvar repræsenterer enhver variabel, der kan gemme en streng (eller en variabel af typen Snor, eller – Variant). Argument Hurtig repræsenterer enhver strengværdi (bogstavelig, konstant eller variabel). Inputboks viser denne streng som en prompt i en dialogboks; skal altid give et argument Hurtig, da dette er påkrævet argument; alle andre er valgfrie. Argument Titel er det andet argument for Inputboks. Titel repræsenterer enhver strengværdi (bogstavelig, konstant eller variabel). Inputboks viser teksten i denne streng i titellinjen i dialogboksen. Hvis du udelader argumentet Titel, VBA vises i titellinjen i dialogboksen Inputboks ord " MicrosoftExcel" . Argument Standard – et strengudtryk, der vises i inputfeltet som standard, hvis brugeren ikke indtaster en anden streng; hvis dette argument udelades, bliver inputfeltet tomt. Argumenter XPos Og YPos kan være alle numeriske udtryk. Disse argumenter giver dig mulighed for at angive, hvor i det aktive vindue inputvinduet skal vises, og er koordinaterne for øverste venstre hjørne af dialogboksen: XPos – vandret afstand fra venstre kant af vinduet; YPos – dette er den lodrette afstand fra vinduets øverste kant. Begge afstande måles i twips ( twips); Et twip er lig med 1/20 af et punkt (et punkt er målingen af ​​en printskrifttype). Da en prik er 1/72 af en tomme, er en twip cirka 0,0007 tomme. Sidste to valgfrie argumenter til funktionen Inputboks- Det her Hjælpefil Og Sammenhæng. De har samme formål som lignende funktionsargumenter MsgBox.

Brug af navngivne funktionsargumenter

Som du måske har bemærket, er det nemt ved et uheld at udelade kommaer eller omarrangere argumentværdier i funktioner, der har valgfrie argumenter eller flere argumenter, på trods af hjælpen fra egenskaben Auto Hurtigt (Kort information) VB editor. Udeladelse eller omarrangering af argumenter i en funktions argumentliste kan resultere i typefejl. Fejlen (endnu værre) bliver muligvis ikke opdaget. For at forhindre programmeringsfejl og gøre det nemmere at bruge funktioner, der har valgfrie argumenter, giver VBA et alternativ til at angive værdierne i argumentlisten i en bestemt rækkefølge. Du kan også overføre

funktionsargumentværdier ved hjælp af navngivne argumenter(som hedder argumenter) funktioner. De følgende linjer viser to udsagn MsgBox, som har samme resultat; Den første sætning bruger den almindelige argumentoptællingsmetode, og den anden bruger den navngivne argumentmetode:

MsgBox AnyMsg, AnyTitle

MsgBox Prompt:=AnyMsg, Title:=AnyTitle

Symbolet, der tildeler en værdi til et navngivet argument (:=), er ikke nøjagtigt det samme som den almindelige tildelingsoperator (=). Hvis du udelader kolon (:), når du tildeler en værdi til et navngivet argument, vil VBA ikke nødvendigvis opdage en syntaksfejl, men vil muligvis ikke fortolke sætningen korrekt. Når VBA udfører denne sætning, viser den en af ​​flere mulige runtime fejl, ofte en type mismatch fejl.

Du kan ikke blande navngivne argumenter med en almindelig argumentliste i det samme funktionskald. Du skal bruge enten navngivne argumenter eller en liste over almindelige argumenter for hvert enkelt funktionskald.

Opgave 5. Skriv en procedure, der beregner arealet af en cirkel, men som får cirklens radius fra brugeren af ​​proceduren.

For det:

Indtast proceduren (liste 7):

Fortegnelse 7 – Modtagelse af inputdata ved hjælp af en operatørInputboks

    Const Pi As Single =3,14 "tilnærmelse af pi-værdi

    Dim CircleArea As Single " gemmer det beregnede areal af cirklen 3

4 Underliste3_07()

    Const BoxTitle = "Areal af cirklen"!}

    Dim radius som enkelt, temp som streng 7

    Temp = InputBox("Indtast radius af " & Chr(13) & "cirkel", BoxTitle)

    Radius = CSng(Temp)

    CircleArea = Pi * Radius * Radius

    MsgBox CircleArea, vbInformation + vbOKCancel, BoxTitle

Linje 1 og 2 i liste 7 erklærer en konstant Pi og en variabel CircleArea modulært niveau. Linje 4 indeholder selve procedureerklæringen. Linje 5 erklærer en proceduremæssig niveaukonstant BoxTitle; denne konstant har kun lokal adgang i proceduren Liste3_07. På linje 8 kalder udsagnet funktionen Inputboks. Det viser sit første argument som tekst i en dialogboks, der beder brugeren om at indtaste værdier af en eller anden type. I denne udtalelse Inputboks viser teksten "Enter Circle Radius" (funktion Chr(13) - nylinjetegn) for at fortælle brugerne af proceduren, hvilken værdi de skal indtaste. Inputboks bruger det andet argument,

12 End Sub

repræsenteret ved en konstant BoxTitle, som titlen på dialogboksen. Ved udførelse af erklæringen Inputboks en dialogboks vises (fig. 16)

Arealet af en cirkel

Indtast radius af cirklen

Ris. 16 Brugeren indtaster et tal i tekstboksen og vælger en kommandoknap Okay eller Afbestille for at lukke dialogboksen ligesom ethvert andet Windows-vindue. Når du kalder en funktion, skal du på en eller anden måde bruge funktionens returværdi. Værdien returneret af funktionen kaldes funktionsresultat(fungere resultat). Som vist på linje 8 for funktionen Inputboks, hvis resultat er tildelt en variabel Midlertidig. Funktionsresultat Inputboks er altid en streng (det er derfor variablen Midlertidig blev annonceret som Snor). Siden variablen Midlertidig blev udtrykkeligt erklæret som Snor, skal strengværdien konverteres til en numerisk værdi, før den kan bruges i matematiske beregninger. Linje 9 i liste 7 gør netop det ved at bruge den indbyggede VBA-funktion CSng at konvertere brugerinput til et antal af typen Single.

Udtryk iVisuelGrundlæggende

Udtryk(udtryk) er en værdi eller gruppe af værdier, der udtrykker en enkelt værdi. Hvert udtryk beregnet til(eller har resultatet af) en separat betydning. Udtryk består af en eller flere af følgende dele: konstanter (bogstaveligt eller navngivet), variabler (af enhver datatype), operatortegn, arrays, arrayelementer, funktioner.

Alle udtryk resulterer i en enkelt værdi af en bestemt datatype. Udtryk kan også resultere i en af ​​de særlige værdier Tom(en ikke-initialiseret variabel af typen Variant eller resultatet af et udtryk, der indeholder en ikke-initialiseret variabel af typen Variant) eller Nul(Nul repræsenterer et udtryk, der indeholder ugyldige data). Når du bruger et tegn i et udtryk, kaldes dataelementerne (variabler eller konstanter), som handlingen udføres på operander(operander); de fleste operationer kræver to operander.

Datatypekompatibilitet. Automatisk datakonvertering

Ikke alle datatyper er kompatible med hinanden, og du kan ikke bruge inkompatible datatyper i det samme udtryk. For eksempel giver aritmetisk tilføjelse af en streng til et tal ikke mening, da et sådant udtryk ikke er meningsfuldt, og VBA ikke kan evaluere det.

Mange datatyper er kompatible med hinanden. Det kan du f.eks

kombinere forskellige numeriske datatyper i det samme udtryk; VBA udfører automatisk de nødvendige typekonverteringer for forskellige numeriske typer. VBA kan også nogle gange automatisk konvertere andre datatyper, så alle typer i et udtryk er kompatible, selvom det ikke altid er muligt. Det er meget vigtigt at kontrollere og kende typen af ​​udtrykket, fordi hvis udtrykkene indeholder inkompatible typer, kaster VBA en runtime fejl - fejl type uoverensstemmelse(type- uoverensstemmelse). Ved behandling af et udtryk, der indeholder forskellige datatyper, "forsøger" VBA først at løse eventuelle typeforskelle ved at konvertere værdierne i udtrykket til kompatible datatyper. Hvis typekonvertering ikke løser nogen forskelle, vises en køretidsfejl, og proceduren stopper med at udføre. For eksempel, i udtrykket 25 & Computer Science udfører VBA altid strengsammenkædning (sammenføjning af to strenge), uanset variabeltyper; resultatet er typen Snor; dette udtryk forårsager aldrig en typefejl.

VBA konverterer typisk alle numeriske datatyper i et udtryk til den højeste præcisionstype og giver derefter denne type til resultatet af udtrykket. For eksempel, hvis udtrykket indeholder numeriske værdier med typer Heltal Og Enkelt, resultatet af udtrykket er typen Enkelt– typen af ​​størst præcision i dette udtryk. Hvis du tildeler resultatet af et numerisk udtryk til en variabel med mindre præcision end den faktiske type af udtryksresultatet, runder VBA resultatet af udtrykket, indtil dets præcision matcher den forventede type. For eksempel, hvis du tildeler et numerisk udtryk, der resulterer i et antal type Dobbelt, variabel type Heltal, VBA afrunder dobbelt præcisionstal til type Heltal.

Når du konverterer et tal til en streng, opretter VBA en streng, der indeholder alle cifrene i dette tal og en decimal (hvis tallet har en). Tallet 3413.72 (prikken bruges til at skrive et tal i kode), for eksempel, konverteres til strengen "3413.72". Hvis tallet er meget stort eller meget lille, kan VBA oprette en strengrepræsentation af tallet i videnskabelig notation; f.eks. konverteres tallet 0,0000000004927 til strengen "4.927E–11".

VBA kan kun konvertere en streng til et tal, hvis strengen indeholder en symbolsk repræsentation af tallet i decimal eller videnskabelig notation. Strengene "988.6", "812", "-186.7", "1,ZE10" repræsenterer tal, og VBA kan konvertere dem til tal. Linjerne "1.045", "74.550 $" og "Godmorgen!" kan ikke konverteres til tal.

Når VBA konverterer værdier af typen Boolean i tal, betydning Rigtigt konverteres til 1 og værdien Falsk– til 0. Når VBA konverterer et tal til en type Boolean, nul konverteres til Falsk, og enhver anden værdi konverteres til Rigtigt. Når VBA konverterer værdier af typen Boolean til strenge, bruger VBA strengen "True" til Rigtigt og "False" – for Falsk.

Når VBA konverterer datatype Dato til et tal er resultatet en numerisk værdi - et tal af typen Dobbelt, som indeholder antallet af dage siden 30. december 1899 (et negativt tal repræsenterer en dato tidligere end 30.12.1899). Decimaldelen af ​​tallet (hvis til stede) udtrykker tidspunktet på dagen som en del

dag; 0 er midnat og 0,5 er middag. I VBA, konvertering af numeriske datatyper til typer Dato er simpelthen det omvendte af typekonverteringen Dato i antal.

Opgaveoperatør (=)

Denne operator bruges til at tildele resultatet af et udtryk til en variabel. Syntaksen for tildelingsoperatorformularen er som følger:

varnavn = udtryk

variabel varnavn - enhver variabel, en udtryk - ethvert udtryk.

Når du udfører en tildelingsoperator, evaluerer VBA først udtrykket til højre for tildelingsoperatoren (=) og gemmer derefter resultatet af udtrykket i den variabel, hvis navn er til venstre for tildelingsoperatoren.

Illustration af opgaveoperatøren i et blokdiagram:

varnavn = udtryk

Når du tildeler resultatet af et udtryk til en variabel med en bestemt datatype, kan dette resultat være af en datatype, der er kompatibel med den type variabel, der modtager den nye værdi. I mange tilfælde kan VBA konvertere datatypen for resultatet af et udtryk til en type, der er kompatibel med typen af ​​den variabel, der modtager den nye værdi, hvis resultatet af udtrykket og variablen ikke allerede har kompatible typer. Variabel type Variant enhver datatype kan tildeles.

Aritmetiske operationer

VBA kan udføre alle de sædvanlige aritmetiske operationer (implementeret gennem aritmetiske udtryk): addition, subtraktion, multiplikation og division, samt hæve tal til en specificeret potens, og giver yderligere specielle matematiske operationer til heltals division og modulo division (tabel 11).

Tabel 11- Operationstegn (notationer) brugt i VBA aritmetiske udtryk (Ni er ethvert gyldigt VBA numerisk udtryk)

Skilt

Syntaks

Navn/beskrivelse

Tilføjelse. Tilføjer N1 til N2

Subtraktion. Trækker N2 fra N1

Multiplikation. Multiplicerer N1 med N2

Division. Deler N1 med N2.

Heltals division. Dividerer N1 med N2 og kasserer enhver brøkdel, så resultatet er et heltal.

Modulopdeling. Dividerer N1 med N2 og returnerer kun resten af ​​divisionsoperationen.

Eksponentiering. Hæver N1 til effekt N2.

Begge operander skal være numeriske udtryk eller strenge, som VBA kan konvertere til et tal.

Sammenligningsoperationer

Sammenligningsoperationer kaldes nogle gange også relationelle operationer(relationelle operatører). Oftest bruges sammenligningsoperationer til at opstille kriterier for at træffe en beslutning eller til at formulere en beskrivelse af betingelserne for, at en gruppe kommandoer skal gentages (cyklusorganisation).

Resultatet af enhver sammenligningsoperation er en værdi af typen Boolean: Rigtigt eller Falsk. Sammenligningsoperatorer bruges til at sammenligne bogstavelige, konstante eller variable værdier af enhver lignende type (tabel 12).

Navn/beskrivelse

Lighed. Rigtigt , hvisEler lig med E2, ellers –Falsk

Mindre end. Rigtigt , hvisElmindre end E2, ellers –Falsk

Mindre end eller lig med.Rigtigt, hvis E1 er mindre end eller lig

E2, ellers –Falsk

Mere end. Rigtigt , hvis E1 er større end E2, ellers –Falsk

Større end eller lig med.Rigtigt, hvis E1 er større end eller lig med

E2, ellers –Falsk

Ikke lige.Rigtigt, hvis E1 ikke er lig med E2, ellers – Falsk

Objekt. Rigtigt, hvis El refererer til det samme objekt som E2, ellers –Falsk Lighed. Begge operander skal være værdier af typen

Tabel 12– Sammenligningssymboler (E i denne tabel repræsenterer ethvert gyldigt VBA-udtryk)

Operation/Operatør

Syntaks

f

eksempel,

Snor. Rigtigt, hvis El matcher

Binær og tekststreng sammenligning

VBA giver to forskellige måder at sammenligne karakterer fra forskellige sager på. Den første metode, som VBA bruger til at sammenligne strenge, kaldes binær (binær) eller binær sammenligning og er standard sammenligningsmetoden. For at vælge VBA's strengsammenligningsmetode (binær eller tekst), skal du bruge direktivet MulighedSammenligne:

Indstilling Sammenlign [ Binær | Tekst]

I tekstsammenligning "behandler" VBA store bogstaver som ækvivalente med små bogstaver.

Sammenkædning af strenge

VBA giver mulighed for at sammenkæde (lime) strenge sammen for at danne længere strenge. At tilføje en streng til en anden kaldes sammenkædning(sammenkædning) linjer. &-tegnet kan kun bruges til at sammenkæde strenge. Den generelle syntaks for &-tegnet er:

Operand1 & Operand2 [& Operand3… ]

Operand1 Og Operand2 – enhver gyldig streng eller numeriske udtryk. Hvis en eller begge operander er numeriske udtryk, konverterer VBA tallene til strenge, før sammenkædningsoperationen udføres. Datatypen for resultatet af strengsammenkædning er altid typen Snor.

Logiske operatører

De mest almindelige anvendelser af logiske VBA-operatorer er at kombinere resultaterne af individuelle sammenligningsudtryk for at skabe komplekse beslutningskriterier i en procedure eller at skabe betingelser, hvorunder en gruppe af udsagn skal gentages (tabel 13).

Tabel 13– Logiske operatorer (E i denne tabel repræsenterer ethvert gyldigt udtryk med et boolesk resultat, såsom en sammenligningsoperator)

Operatørsyntaksnavn/beskrivelse

Og El Og E2 Konjunktion. Rigtigt, hvis både E1 og E2 er signifikante

Rigtigt , Ellers -Falsk Eller El Eller E2 Disjunktion. Rigtigt, hvis et udtryk eller begge (E1 og

E2) er ensRigtigt ; Ellers -Falsk Ikke Ikke El Negation. Rigtigt, hvis E1 har en værdi Falsk; Falsk,

HvisEler ligeRigtigt

Undtagelse. Rigtigt, hvis E1 og E2 har forskellige

værdier; Ellers -Falsk

Ækvivalens. Rigtigt, hvis E1 har det samme

betyder det samme som E2; Ellers -Falsk

Implikation. Falsk, når E1 er lig Rigtigt Og

E2 er lig medFalsk ; Ellers -Rigtigt .

Operationsprioriteter ved evaluering af komplekse udtryk

Kompleks(sammensatte) udtryk(kompleks udtryk) er ethvert udtryk dannet af to eller flere udtryk. Mange af de udtryk, du skriver, er komplekse udtryk, især hvis de styrer rækkefølgen af ​​kode i procedurer eller repræsenterer forskellige matematiske formler (tabel 14).

Tabel 14– Hierarki af udsagn/operationer fra højeste til laveste prioritet

Operatør/skilt Kommentarer

Eksponentiering, højeste prioritet

Unær minus

Multiplikation og division har samme prioritet; de evalueres, som de vises i udtrykket fra venstre mod højre

Addition og subtraktion har samme prioritet; de evalueres, som de vises i udtrykket fra venstre mod højre

Al strengsammenkædning udføres efter alle aritmetiske operationer i udtrykket og før enhver sammenligning eller logiske operationer

<, <=, >, >=,

Ligesom, =,<>, er

Alle sammenligningsoperatorer har samme forrang og evalueres, som de vises i udtrykket fra venstre mod højre. Brug parenteser til at gruppere sammenligningsoperatorer i udtryk

Brug af funktionerVisual Basic

Har du allerede brugt de indbyggede VBA-funktioner: Inputboks Og MsgBox. Fungere(fungere) er en indbygget formel, der udfører operationer på udtryk og genererer en værdi. En funktion returnerer altid en værdi, som VBA indsætter i programmet, hvor funktionsnavnet vises. VBA-funktioner er opdelt i flere grupper afhængigt af den type operation eller beregning, de udfører. Forveksle ikke vilkårene fungere Og procedure. Typisk udfører en procedure en specifik opgave (eller gruppe af opgaver), ligesom en specifik menukommando i Excel, Word eller et andet program udfører en specifik opgave. En funktion opererer på en eller flere værdier og returnerer en eller anden resulterende værdi (som en formel i en celle i et Excel-regneark). For at bruge en funktion skal du blot indtaste funktionsnavnet i en VBA-sætning sammen med eventuelle argumenter, som funktionen kræver på det punkt i sætningen, hvor du skal bruge funktionens resultat. At placere navnet på en funktion i en VBA-sætning for at kalde funktionen kaldes udfordring(ringer) funktioner.

VBA indbyggede funktioner er opdelt i flere kategorier baseret på det generelle formål med funktionerne (matematisk, datakonvertering, dato og klokkeslæt, streng og diskmanipulation).

Matematiske funktioner

VBA giver et standardsæt af matematiske funktioner (tabel 15). Tabel 15– VBA matematiske funktioner (N betyder ethvert numerisk udtryk)

Returnering/handling

Funktioner (ar-

tandkød)

Returnerer absolut værdiN

Abs(N)

Cosinus af vinkelN, HvorN

Cos(N)

Returnerer sinus af en vinkel;Ner vinklen målt i radianer

Synd(N)

Tan(N)

Returnerer tangens af en vinkel;N– vinkel i radianer

Atn(N)

Returnerer arctangensenNsom vinklen i radianer

Returnerer en konstant e, hævet til potensen N ( e er basis for naturlige logaritmer, og det er (ca.) svarer til 2,718282)

Returnerer heltalsdelen af ​​N. Fix runder ikke tallet, men kasserer enhver brøkdel. Hvis N er negativ, returnerer Fix det nærmeste negative heltal større end eller lig medN

Log(N)

Returnerer heltalsdelen af ​​N. Int afrunder ikke tallet, men kasserer enhver brøkdel. Hvis N er negativ, returnerer Int det nærmeste negative heltal mindre end eller lig medNReturnerer den naturlige logaritmeN

tilfældig

argument

er

Vender tilbage

valgfri. Brug kun Rnd-funktionen efter

initialisering af VBA tilfældigt tal generator med operatøren

Randomiser

Returnerer tegnet for tallet: –1 hvis N er negativ; 1 hvis N –

positiv; 0 hvisNer lig med 0

Returnerer kvadratroden af ​​N. VBA viser en fejl

udførelsestid, hvisN– negativ

Datakonverteringsfunktioner

Visual Basic indeholder flere funktioner til at konvertere en datatype til en anden (tabel 16). Brug disse funktioner til at løse typemismatch-fejl og give eksplicit kontrol over datatyper i udtryk.

Tabel 16– Datakonverteringsfunktioner (N er enhver numerisk, S er enhver streng, og E er et udtryk af enhver type)

Funktion(ar- Returnerer/Handlingtandkød)

Returnerer det tegnkodenummer, der svarer til det første bogstav linjerS. Bogstavet "A" har for eksempel en tegnkode på 65

Funktion(argumenter)

Returnering/handling

Returnerer en streng på ét tegn svarende til tegnkoden N, som skal være et tal mellem 0 og 255 inklusive. Tegnkode 65 returnerer f.eks. bogstavet "A" (Chr(13) er et vognreturtegn, Chr(10) er et forskudt tegn på én linje)

Returnerer en streng, der indeholder værdien repræsenteret af udtryk E, formateret i overensstemmelse med instruktionerne i S

Returnerer en streng, der indeholder den hexadecimale repræsentation af N

Oct(N) Returnerer en streng, der indeholder den oktale repræsentation af N

Returnerer et heltal af typen Lang, der repræsenterer værdien af ​​billedets primære farver. N i hvert argument skal være et heltal i området 0 – 255 inklusive. Argumenterne (fra venstre mod højre) er værdierne for rød, grøn og blå

Str(N) Returnerer en streng svarende til det numeriske udtryk N

Returnerer en numerisk værdi svarende til tallet repræsenteret af strengen S, som kun må indeholde cifre og en decimal, ellers kan VBA ikke konvertere det til et tal. Hvis VBA ikke kan konvertere strengen til S, returnerer Val-funktionen 0

CBool(N) Returnerer den boolske ækvivalent af det numeriske udtryk N

Byte(fra 0 til 255); E – ethvert gyldigt numerisk eller strengudtryk, der kan konverteres til et tal

Returnerer en numerisk værdi af typen betalingsmiddel

Returnerer en værdi af typen Dato. E kan være et hvilket som helst gyldigt udtryk (streng eller tal), der repræsenterer en dato i området 1/1/100 12/31/9999 , inklusive

Returnerer en numerisk værdi af typen Dobbelt, som kan konverteres til et tal

Returnerer en numerisk værdi af typen Heltal; E – ethvert gyldigt numerisk eller strengudtryk, der kan konverteres til et tal

Returnerer en numerisk værdi af typen Lang; E – ethvert gyldigt numerisk eller strengudtryk, der kan konverteres til et tal

Funktion(argumenter)

Returnering/handling

Returnerer en numerisk værdi af typen Enkelt; E – ethvert gyldigt numerisk eller strengudtryk, der kan konverteres til et tal

Returnerer en værdi af typen Snor; E – ethvert gyldigt numerisk eller strengudtryk

Returnerer en værdi af typen Variant; E – ethvert gyldigt numerisk eller strengudtryk

Dato og klokkeslæt funktioner

VBA dato- og klokkeslætsfunktioner bruges typisk til at få den aktuelle dato og klokkeslæt, opdele en datoværdi i dens komponentdele eller konvertere strenge og tal til værdier som f.eks. Dato(Tabel 17).

Tabel 17– Dato- og tidsfunktioner (N er ethvert gyldigt numerisk udtryk, og D er ethvert gyldigt udtryk som f.eks Dato(inklusive værdier som Dato, tal eller strenge, som VBA kan konvertere til en dato); alle funktionsargumenter er påkrævet, medmindre andet er angivet)

Returnering/handling

Funktioner (ar-

tandkød)

Returnerer systemdatoen. Du kan også bruge denne funktion som en procedure til at indstille din computers systemur. Flere detaljer kan findes i opslagsbogen. systemerVBA

Returnerer computerens systemtid som en typeværdi Dato. Du kan også bruge denne funktion som en procedure til at indstille systemuret. Flere detaljer kan findes fra hjælpesystemetVBAReturnerer systemets dato og klokkeslæt

Dato Og

Returnerer et heltal, der er en del af et udtryk af type Dato,

inklusive

Returnerer et heltal, der er en del af et udtryk af type Dato Og

Ugedag(D) Time(D)

inklusive

Returnerer et heltal, der indeholder ugedagen for et udtryk af typen

Dato. Ugedagen returneres som et tal mellem 1 og 7,

inklusive; 1 er søndag, 2 er mandag og så videre

Returnerer et heltal, der indeholder timerne som en del af tiden,

et tal mellem 0 og 23 inklusive. Hvis udtryk D ikke er det

indeholder tidsværdier, såTimereturnerer 0

Funktioner (ar-tandkød)

DateAdd(S, N, D)

DatoSerial(N, N, N)

TimeSerial(N, N, N)

Returnering/handling

Returnerer et heltal, der indeholder minutter som en del af tiden i

udtrykstype Dato. Minutterne returneres som et tal mellem 0

og 59, inklusive. Hvis udtryk D ikke indeholder en værdi

tid,Minutreturnerer 0

Returnerer et heltal, der indeholder sekunder som en del af tiden in

udtrykstype Dato. Sekunderne returneres som et tal mellem

0 og 59 inklusive. Hvis udtryk D ikke indeholder en værdi

tid,Andenreturnerer 0

Returnerer værdi [type Variant(Dato)], der indeholder datoen til

DatoDiff(S, D1, Returnerer [type Variant(Lang)] antal midlertidige D2[,Nl [, N2 ]]) intervaller mellem to specifikke datoer DatoPart(S, D, [, Returnerer den angivne del [type Variant(Heltal)] N1 [, N2]]) givet dato

hvortil et specificeret tidsinterval tilføjes

Returnerer den sekventielle datoværdi for den givne dato. Fra venstre mod højre repræsenterer argumenterne år, måned og dag. Argumentet år skal være et heltal mellem 100 og 9999, måneden skal være mellem 1 og 12, dagen skal være mellem 1 og 31 (alle intervaller er inklusive)

Returnerer den serielle tidsværdi. Fra venstre mod højre repræsenterer argumenterne timer, minutter og sekunder. Argumentet timer skal være et heltal mellem 0 og 23, argumenter minutter og sekunder skal begge være tal fra 0 til 59 Returnerer en værdi af typen Dato, svarende til datoen angivet af argument E, som skal være en streng, et tal eller en konstant, der repræsenterer en dato

midnat i henhold til computersystemets tid Nogle af de nævnte funktioner er allerede blevet brugt i eksemplerne i denne bog, andre vil blive brugt yderligere.

String funktioner

VBA-strengfunktioner bruges ofte til at finde specificerede strenge i andre strenge, sammenligne en streng med en anden og kopiere udvalgte dele af strenge (tabel 18).

Returnerer en værdi af typen Dato, der indeholder den tid, der er angivet af argument E, som kan være en streng, et tal eller konstant repræsenterer tid Returnerer et tal, der repræsenterer antallet af sekunder fra

Tabel 18– Strengfunktioner (N er ethvert gyldigt numerisk udtryk, og S er ethvert gyldigt strengudtryk)

tyggegummi)

Returnerer positionen for S2 i S1. N1 – udgangsposition for

Søg; N2 bestemmer typen af ​​sammenligning. N1 og N2 er valgfri. Hvis N2 udelades, bruges den nuværende til søgning installationMulighed Sammenligne InStrRev(Sl, S2 Returnerer den position, hvor streng S2 vises inde i S1

[, Nl[, N2]]) LCase(S)

Len(S) LTrim(S)

Mellemrum (N) StrComp(Sl, S2, N)

i retningen fra slutningen (eller N1) til begyndelsen af ​​linjen. N2 bestemmer typen af ​​sammenligning. Hvis N2 er udeladt, bruges brug til søgning nuværende installationMulighed Sammenligne

Returnerer en streng (type Snor), der indeholder en kopi af S med alle store bogstaver konverteret til tegn små bogstaver

Returnerer en streng; kopierer N tegn fra S, startende fra venstre sidste tegnS

Returnerer antallet af tegn i S, inklusive indledende og efterfølgende tegn mellemrum

fra venstre side af linjen (førende mellemrum) Returnerer en streng; kopierer N2 tegn fra S, startende ved tegnpositionen i S angivet af N1. N2 er valgfri; hvis N2 udelades, returnerer Mid alt tegn i en strengSfra positionN1 til slutningen af ​​linjen Returnerer en strengværdi; kopierer N tegn fra S,

startende fra tegnet længst til højreS

Returnerer en kopi af strengen S, efter at mellemrumstegn er blevet fjernet

fra højre side af strengen (sluttegn)

Returnerer en række af længderNtegn

Sammenligner S1 med S2 og returnerer et tal, der angiver resultatet af sammenligningen: -1 hvis SI< S2; 0, если SI = S2; 1, если SI >S2. N er valgfri og angiver, om sammenligningen skal skelnes mellem store og små bogstaver. Hvis N udelades, sammenlignes strenge med den aktuelle indstilling MulighedSammenligne

Returnerer en streng konverteret til en ny form baseret på den numeriske kode specificeret af N. VBA giver interne konstanter til brug med StrConv-funktionen; de mest nyttige er: vbProperCase(konverterer strengen, så hvert bogstav, der begynder et ord, bliver stort), vbLowerCase(konverterer strengen til små bogstaver) og vbUpperCase(konverterer strengen til store bogstaver)

Funktion(ar- Returnerer/Handlingtyggegummi)

String(N, S) Returnerer en streng på N tegn lang, bestående af tegnet

angivet af det første tegn iS Trim(S) Returnerer en kopi af strengen S efter fjernelse af indledende og

afsluttende mellemrumstegn fra denne streng UCase(S) Returnerer S med alle små bogstaver,

konverteret til store bogstaver Flere anført i tabellen. De 16 datatypekonverteringsfunktioner gælder også for strengmanipulation: Chr, Format, CStr, især.

Formatering af dataværdier

Selvom VBA automatisk kan konvertere enhver datatype til en streng til visning ved hjælp af MsgBox-funktionen eller til indsættelse i et Excel-regneark, er det dataformat, som VBA vælger, muligvis ikke det, du ønsker. Når et tal konverteres til en streng, tilføjer VBA ikke en tusinde-separator, dollartegn eller anden talformatering til strengen. Derudover, hvis et tal er meget stort eller meget lille, opretter VBA en streng, der repræsenterer dette tal i videnskabelig notation. Ved konvertering af datoer bruger VBA altid det korte dato- og klokkeslætsformat, der bruges af computerens styresystem og viser altid både dato og klokkeslæt.

For at få næsten ethvert datoformat, når du konverterer tal eller datoer til strenge, kan du bruge funktionen Format; du kan endda bruge funktionen Format at formatere strengdata i overensstemmelse med et specifikt mønster. Du kan også oprette brugerdefinerede skærmformater, hvis du har brug for, at dataene vises i et bestemt format. Formater operatørsyntaks:

Format( Udtryk [, Format[, Ugens første dag [, Årets første uge]]])

Udtryk – ethvert gyldigt udtryk (obligatorisk); Format – et gyldigt udtryk af et navngivet eller brugerdefineret format (valgfrit); Ugens første dag – en konstant, der definerer den første dag i ugen (valgfrit); Årets første uge – en konstant, der definerer årets første uge (valgfrit).

For argumenter Ugens første dag Og Årets første uge VBA har navngivne konstanter, som du kan lære om i VBA Hjælp under Dato Constants.

For at bruge funktionen Format, kan du enten angive et foruddefineret format (kaldet navngivet format(som hedder format), eller opret et billede af et bestemt format ved hjælp af kombinationer af en speciel gruppe af tegn kaldet pladsholdertegn(pladsholdere). Hvis du skal oprette brugerdefinerede formater for tal, datoer eller klokkeslæt, skal du oprette en streng, der indeholder pladsholdertegn for at angive den formatering, som funktionen skal bruge Format ved konvertering af værdier til en streng (tabel 19). Desuden i tabel. 19 brugt

som et eksempel er den numeriske værdi 1234,5.

at skabe brugerdefinerede

Tabel 19– Formater udfyldningstegn

Pladsholdertegn

Handling

Et numerisk tegn, der viser et ciffer, hvis man er i den position, eller 0, hvis ikke. Du kan bruge tegnet 0 til at vise indledende nuller for heltal og efterfølgende nuller for decimaler; 00000.000 viser 00124.500

Et numerisk symbol viser et ciffer, hvis der er et i denne position, ellers viser det ikke noget. Pladsholdertegnet # svarer til 0, bortset fra at indledende og efterfølgende nuller ikke vises; #####.### viser 1234.5

$ Viser et dollartegn; $###,###.00 viser $1.234,50

Decimalpladsholdertegn, viser decimaltegnet på den angivne position i pladsholdertegnstrengen 0; #.##.## viser 1234.5

Procentsymbol, multiplicerer værdien med 100 og tilføjer et procenttegn ved den position, der er angivet med 0-udfyldningstegnene; #0.00% viser tallet 0,12345 som 12,35% (12,345 afrunder til 12,35)

, (komma)

Tusindvis-separator, tilføjer kommaer som tusindvis-separatorer i 0- og #-udfyldningstegnstrenge; ###,###,###. 00 viser 1.234,50

Viser værdier i eksponentielt format med eksponenttegn kun for negative værdier; #.#### E00 viser 1.2345E03; 0,12345 vises som 1,2345E-01

Viser værdier i eksponentielt format med en eksponent for positive og negative værdier; #.#### E+00 viser 1.2345E+03

Adskiller dag, måned og år for formatering af datoværdier. mm/ dd/ åå viser 06/06/97. "/"-tegn kan erstattes med bindestreg for at blive vist som 06-06-97

Angiver, hvordan måneder skal vises i datoer; m viser 2, mm– 02, mmm– februar, mmmm- februar

Angiver, hvordan dage skal vises i datoer; d viser 1, dd viser 01, ddd– fre, ddd- Fredag

y Viser dagen i året som et tal fra 1 til 366

Angiver, hvordan årstal vises i datoer; åå viser 99, wow– 1999

Viser årets kvartal som et tal fra 1 til 4

Viser ugedagen som et tal (1 er søndag)

Viser ugen i året som et tal fra 1 til 54

Pladsholdertegn

Handling

: (kolon) Adskiller timer, minutter og sekunder i tidsformatværdier; hh: mm: ss viser 02:02:02

Angiver, hvordan uret skal vises; for tidsværdien 02:01:38 h viser 2, hh viser 02

Minutpladsholdersymbol for tid; for tidsværdi 02:01:08 n viser 1 og nn viser 01

Sekunder pladsholder symbol for tid; for tidsværdi 02:01:08 s viser 8, og ss viser 08

Viser tiden i 12-timers tidsformat med AM og PM tilføjet; h: nnAM/RM viser 16:00. Alternative formater omfatter am/pm, A/P og a/p

Tegnpladsholder, viser et mellemrum, hvis der ikke er noget matchende tegn i den formaterede streng (standard udfyldningsrækkefølge er højre mod venstre)

Viser alle tegn med store bogstaver

Viser alle tegn med små bogstaver

Brug af værtsapplikationsfunktioner

Ud over de funktioner, der er indbygget i Visual Basic for Applications, er nogle VBA-værtsapplikationsfunktioner tilgængelige fra VBA-kode. Vært-Ansøgning er en applikation, hvori VBA-procedurer som Word, Excel, PowerPoint, Outlook eller FrontPage udvikles. Excel har for eksempel forskellige funktioner, der udfører matematiske, logiske, økonomiske og statistiske operationer på data i regneark. Mange (men ikke alle) af disse Excel-funktioner er tilgængelige fra VBA-kode. Værtsapplikationsfunktionerne, der er tilgængelige for VBA, er ikke en del af VBA, de er en del af værtsapplikationen. Funktioner, der er tilgængelige for VBA i én værtsapplikation, er muligvis ikke tilgængelige i en anden.

For at bruge en funktion, der hører til en værtsapplikation, skal du få adgang til funktionen gennem et programobjekt Ansøgning. Application VBA-objektet repræsenterer værtsapplikationen og alle dens ressourcer. Objekter er beskrevet mere detaljeret i del 6.

Opgave 6. Skriv en procedure, der bruger Excels Max-funktion.

For det:

Indtast proceduren (liste 8):

Fortegnelse 8 – Brug af Excel-funktionerMaks

1 underliste3_08()

2 MsgBox Application.Max(9, 17, -18, 20)

Bag Ordet Ansøgning efterfulgt af en prik (.) og derefter funktionsnavnet Maks uden mellemrum. Dette punkt, kaldet separator prik(prik separator), angiver, at udsagnet refererer til en funktion Maks, som er en del af objektet

Ansøgning.

Resultatet af Excel-funktionen kan ikke ignoreres. Du bør altid inkludere parenteser i et Excel-funktionskald, og du bør altid bruge funktionsresultatet på en eller anden måde: som en værdi i et udtryk, et argument til en anden funktion eller procedure eller i en tildelingssætning.

Ikke alle værtsapplikationsfunktioner er tilgængelige for VBA. Hvis du ikke er sikker på, om en bestemt værtsapplikationsfunktion er tilgængelig for VBA, skal du bruge Objekt Browser for at kontrollere, om listen indeholder Medlemmer (Komponent) denne funktion, når den er valgt Arbejdsark Funktion på listen Klasser (Klasser) og med den valgte værtsapplikation på listen Projekt/ Bibliotek (Projekt/Bibliotek). Hvis den ønskede funktion ikke er på listen, er den ikke tilgængelig for VBA.

Kontrolspørgsmål

    Definer begrebet "datatyper". Hvilke datatyper bruges i VBA?

    Hvad er et ID?

    Hvad er en variabel? Hvad betyder udtrykket "definer en variabel implicit", og hvad betyder det "eksplicit"?

    Hvilke konstanter bruges i VBA? Hvad er interne konstanter?

    Hvad bruges InputBox- og MsgBox-funktionerne til?

    Hvad er et udtryk?

    Definer tildelingsoperatorens syntaks.

    Hvad er relationelle operationer?

    Hvad er prioriteringen af ​​matematiske operationer?

    Hvilket nøgleord findes i VBA, som du skal bruge, når du får adgang til Excel-funktioner? Hvad kan du bruge objektbrowservinduet til?

Procedurer og funktioner er separate blokke, der udgør programkoden; hver procedure udfører en opgave eller en del af den.

Begivenhedsrutiner venter konstant på begivenheder, efter de er blevet kaldt.

Ud over hændelsesbehandlingsprocedurer kan et program omfatte procedurer og funktioner, der ikke er relateret til hændelser. De udfører separate handlinger og kan bruges gentagne gange. Lad os kalde dem generelle. Generelle procedurer kaldes til udførelse i programkode. Brug af procedurer sparer tid og undgår unødvendige fejl. Funktioner adskiller sig fra procedurer ved, at de returnerer en værdi.

En procedure eller funktion er en sekvens af operationer, der skal udføres gentagne gange forskellige steder i applikationen. I dette tilfælde skrives den nødvendige blok af kommandoer kun i koden én gang, hvorefter den kan tilgås fra enhver del af programmet.

Fungere er en underrutine, der kaldes til at udføre en form for beregning eller kontrol. Når den er færdig med sit arbejde, returnerer den kontrollen til det kaldende program og sender resultatet af beregningen til den.

Procedure- dette er også en underrutine. Det kaldes også for at udføre en handling, men det er ikke nødvendigt at returnere nogen værdier til hovedprogrammet.

Procedure- og funktionsdeklarationssyntaks:

Sub<Имя процедуры>(<Параметры>) <Операторы>Afslut underfunktion<Имя функции> <Операторы>Afslut funktion

Procedurer deklareret med det offentlige nøgleord kan kaldes i ethvert ansøgningsmodul (hver formular er et separat modul).

Procedurer erklæret som Private kan kun kaldes i det aktuelle modul.

Ordet Statisk betyder, at alle variabler, der er deklareret i proceduren, vil være statiske, dvs. deres værdier bevares mellem opkald.

Parametre giver forbindelsen mellem en procedure og en applikation. Dette er de data, der sendes til proceduren, når den kaldes.

Begivenhedshåndteringsprocedurer. Kaldes, når en hændelse indtræffer. I dette tilfælde er både navnet på elementet og typen af ​​begivenhed, der skete med det, væsentlige.

Brugerdefinerede procedurer. Grupper af operatører oprettet af udvikleren til at udføre specifikke opgaver og ikke afhængig af den aktuelle tilstand af applikationen eller begivenheder, der fandt sted på et eller andet tidspunkt.

Indbyggede funktioner. Visse sæt kommandoer, der er tilgængelige i Visual Basic-sproget og beregnet til at beregne visse værdier baseret på kildedata. Især er både matematiske og strenge funktioner indbygget (Abs, Cos, Sin, Mid, Len osv.)

Brugerdefinerede funktioner. Grupper af udsagn, der ligner brugerprocedurer.

Der er dog en række forskelle mellem dem.

De vigtigste forskelle mellem en funktion og en procedure er som følger.

1. En funktion har en type (ligner en variabel) og kan returnere en værdi til programmet, som er tildelt funktionen ved hjælp af operatoren:

<Имя функции>= værdi

2. En funktion kaldes som regel ved at angive dens navn og parametre på højre side af enhver operator. På den anden side kaldes proceduren ved hjælp af en separat erklæring:

Opkald<Имя процедуры>(Muligheder)

<Имя процедуры>(Muligheder)

Hvis nøgleordet Call bruges, når en procedure kaldes, skal listen over parametre angives i parentes. Hvis proceduren kaldes uden at bruge Call, vises dens parametre uden parentes.

Det skal bemærkes, at den kaldte procedure muligvis ikke har parametre. I dette tilfælde (hvis serviceordet Call blev brugt), skal tomme parenteser placeres efter procedurenavnet.

Brugerprocedurer bruges normalt, når det er nødvendigt at udføre den samme rækkefølge af operationer. For eksempel kræver et program, at du gentagne gange indtaster værdierne af en array arrA, bestående af fem elementer, i en loop. I dette tilfælde udføres udfyldning af arrayet bedst som en procedure.

Kommandoen Tilføj procedure i menuen Værktøjer giver dig mulighed for at tilføje en procedure eller funktion.

Lad Cir-proceduren tegne en ellipse med koordinater x, y, som overføres til proceduren som parametre. Når du opretter en Cir-procedure med kommandoen Tilføj procedure, skal du angive procedurenavnet og vælge omfanget Offentlig eller Privat.

Efter at have afsluttet dialogen modtager vi en erklæring om proceduren:

Private Sub Cir() : End Sub

Nu skal du indtaste parametrene i parentes og skrive procedurens tekst. Det anbefales at angive typen af ​​variabler i listen over parametre.

Privat Sub Cirkel(x Som heltal, y Som heltal) Cirkel (x,y),500,2 End Sub

Variabler erklæres i begyndelsen af ​​programmet som følger:
Dim variabelnavn som variabeltype
Eller for flere variable af samme type
Dim variabelnavn 1, variabelnavn 2, ... variabelnavn N som variabeltype
Variabelnavnet er angivet med engelske bogstaver, for eksempel: InX, InY
Navnet kan indeholde tal ud over bogstaver, men det første bogstav skal være et bogstav, for eksempel: z500, x_1, y2.
Variabeltypen afhænger af den opgave, der udføres. Følgende er de vigtigste numeriske typer i Visual Basic:

Heltalstyper
Heltal- numre fra -32768 til +32767
Lang- numre fra - 9223372036854775808 til +9223372036854775807

Flydende komma typer
flyde- tal fra + 1,5*10 -45 til + 3,4*10 33
dobbelt- tal fra + 5*10 -324 til + 1,7*10 306

Heltal er naturligvis ikke egnet til en lommeregner, så vi vil bruge float-typen til beregninger.
Lad os først oprette en hændelseshandler (i det følgende blot en hændelse) til knappen. En klikhændelse på denne knap kan oprettes ved blot at dobbeltklikke på knappen. Som et resultat vil kodeeditoren åbne med følgende tekst:

Offentlig klasseformular 1
Private Sub Button2_Click(ByVal afsender Som System.Object, ByVal e As System.EventArgs) Håndterer Button2.Click

Slut Sub
Slut klasse

Lad os tilføje kodelinjer for at erklære variabler og startindstillinger.

Offentlig klasseformular 1
Dim x1, x2, z Som dobbelt REM variabel erklæring
Private Sub Button2_Click(ByVal afsender Som System.Object, ByVal e As System.EventArgs) Håndterer Button2.Click
"Rydning af tekstfelter
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
" Nulstilling af variabler til nul
x1 = 0
x2 = 0
z = 0
Slut Sub
Slut klasse

Programkommentarer kan skrives ved at bruge standardordet REM (Remark) eller ved at sætte et enkelt anførselstegn (apostrof) i begyndelsen af ​​kommentarlinjen. Hvis en kommentar strækker sig over flere linjer, skal du indtaste REM eller en apostrof i begyndelsen af ​​hver linje. Kommentarer påvirker ikke driften af ​​programmet på nogen måde.

Lad os prøve at køre programmet til udførelse (F5), og efter at have indtastet nogle tegn i indtastningsfelterne, tryk på knappen. Alle felter skal ryddes.

Lad os nu oprette en begivenhed for knappen "Beregn". Ved at dobbeltklikke på knappen får vi begivenhedskoden:

Private Sub Button1_Click(ByVal afsender Som System.Object, ByVal e As System.EventArgs) Håndterer Button1.Click

Lad os tilføje de kodelinjer, der er nødvendige for beregningerne:

Private Sub Button1_Click(ByVal afsender Som System.Object, ByVal e As System.EventArgs) Håndterer Button1.Click
x1 = Convert.ToDouble(TextBox1.Text)
x2 = Convert.ToDouble(TextBox3.Text)
Hvis TextBox2.Text = "+" Så er z = x1 + x2
Hvis TextBox2.Text = "-" Så er z = x1 - x2
Hvis TextBox2.Text = "*" Så er z = x1 * x2
Hvis TextBox2.Text = "/" Så er z = x1 / x2
TextBox4.Text = Convert.ToString(z)
Slut Sub

Lad os se på, hvad de tilføjede linjer betyder.
x1 = Convert.ToDouble(TextBox1.Text) - betyder at tildele variabel x1 værdien fra tekstfeltet TextBox1. Da TextBox1 indeholder teksttypedata, skal det konverteres til en numerisk type. For at gøre dette bruger vi funktionen Convert.ToDouble. Den anden linje ligner den første, men for værdien x2.
Dernæst kommer linjerne med de såkaldte betingede operatører. For eksempel linjen betyder: Hvis (hvis) teksten fra tekstfeltet TextBox2 er lig med symbolet +, så tildel (Så) summen af ​​værdierne x1 og x2 til variablen z.
Ved sekventielt at kontrollere, hvilket tegn der er indtastet som tegn på operationen, udfører vi den tilsvarende beregning. Og endelig viser vi resultatet i TextBox4-linjen. Da TextBox4 kun accepterer teksttypedata, bør vi konvertere værdien af ​​z-variablen til en strengtype. For at gøre dette bruger vi konverteringsfunktionen Convert.ToString(z).
Lad os prøve at lave beregninger i vores lommeregner. Lad os køre programmet (F5). Ved indtastning af flydende kommatal skal du bruge et tegn som skilletegn.

Lad os for variation føje til vores lommeregner operationen med at hæve værdien 1 til potensen af ​​værdien 2. Potensen er normalt angivet med ^-symbolet. For at udvide lommeregnerens muligheder skal du tilføje en linje til hændelseshåndteringskoden:

Hvis TextBox2.Text = "+" Så er z = x1 + x2
Hvis TextBox2.Text = "-" Så er z = x1 - x2
Hvis TextBox2.Text = "*" Så er z = x1 * x2
Hvis TextBox2.Text = "/" Så er z = x1 / x2
Hvis TextBox2.Text = "^" Så er z = Math.Pow(x1, x2)

Til at beregne graden bruger vi funktionen Pow(x1, x2) som er indbygget i Math objektet.