Excel objekter. Excel-objektmodel i VBA

Underhovedprocedure()

Ring til GetProblemSize

Sub GetProblemSize()

ReDim besøgt (Nities)

ReDim-rute(Nities + 1)

Underinitialiser()

Dim I Som heltal

Rute(Ncities + 1) = 1

Besøgt(1) = Sandt

For I = 2 Til Ncities

Besøgt(I) = Falsk

Brugerproceduresyntaks:

Sub ProcedureName (parametre)

<Тело процедуры>

Parameterlisteelementerne har følgende form: Elementnavn Som DataType

7. Typer af underrutiner og deres definitioner: definition og typer af procedurer. Eksempler på forskellige typer procedurer. Logiske stykker kode, der udfører en bestemt opgave, kaldes subrutiner. I vba kaldes makroer, procedurer og endda funktioner subrutiner. En funktion er en underrutine, der opererer inden for sin blok og kun returnerer én værdi. Funktioner: 1)f. bruger 2) f. klasse moduler. Funktionen har følgende syntaks:

Funktion Funktionsnavn (parameterliste) Som datatype

<тело функции>

Datatypen for en funktion er beregnet til at bestemme typen og returnere værdien af ​​funktionen

For at oprette en brugerfunktion skal du: 1. hvis der ikke er noget modul Indsæt/Modul 2. Indsæt/Procedure 3. I det vindue, der åbnes, skal du vælge alternativknappen "Funktion", i feltet Navn indtaste navnet på funktion (“Omsætning”) 4. I samme vindue skal du vælge alternativknappen “generelt”, så typen er Offentlig 5. Ok. Et redigeringsvindue åbnes. Indtast funktionsparametre og kode.

Funktion Doxod (procent som dobbelt, platezh som variant, gud som variant) som dobbelt

Dim i, j, n som heltal, s som dobbelt

n=pladezh.rows.count

s=s+platezh(i)/(1+procent)^((gud(i)-gud(1))/365)

Uden at lukke vinduet View/Object Browser. Objektvisningsvinduet åbnes. Vælg VBAProject i øverste venstre hjørne, og vælg elementer i det aktuelle projekt i vinduet Klasser. Vælg det modul, hvor din funktion. Vælg derefter alle elementer i vinduet Komponenter, inklusive funktionen Indkomst. Klik Højreklik musen på Indkomst og vælg Egenskaber. Vinduet "Komponentparametre" åbnes, indtast en beskrivelse (formål) af funktionen. Luk vinduet og derefter vil din funktion blive tilføjet til biblioteket af standard Excel-funktioner.

8. Deklaration af variabler. Erklæring af variabler i moduler og procedurer. Omfang af variabler og procedurer. Et eksempel på at overføre argumenter til en procedure.

Dim I Som heltal, j Som heltal, k Som heltal

For ikke at glemme at erklære variablerne Værktøjer/Indstillinger/i Editor, hvor du skal markere afkrydsningsfeltet Kræv variabeldeklaration.



Mulighed Eksplicit – generelt område. Denne erklæring vil kontrollere deklarationen af ​​variabler. Der er en meget vigtig variabeltype, som VB ikke havde. Disse er objektvariabler. Dæmp A som objekt. Specialetui: Dim A As Range. For eksempel vil vi have adgang til en række celler under en procedure. D

Dim SRange As Range

Indstil SRange=ActiveWorkBook.WorkSheets(“Salg”).

Range ("Salgsrækkevidde")

SRange.Font.Size=14

Sæt nøgleordet bruges kun, når der tildeles en værdi til en objektvariabel.

Variabler har et omfang. Variabler kan være: globale (Offentlig bruges til deklaration) og lokale (Privat, Dim-operator bruges). En variabel af typen Public er en variabel på modulniveau, Dim er en variabel på procedureniveau. En variabel defineret i et modul af Dim-sætningen kan omdefineres af den samme sætning i en procedure, der hører til dette modul.

Overførsel af argumenter til en procedure. Du kan overføre argumenter (fornavn, efternavn) fra hovedproceduren til proceduren Displaynavn. Derefter kaldes Main-proceduren den primære, og DisplayName kaldes den, der blev kaldt. I dette tilfælde er variablerne Fornavn og Efternavn ikke erklæret som variable på modulniveau, men erklæres som lokale procedure variabler Hoved.

Sub Main()

Dim Fornavn som streng, efternavn som streng, I som heltal

FirstName=Range(“Names”).cells(i, 1)

Efternavn= Range(“Names”).cells(i, 2)

Ring til DisplayName

Undervisningsnavn

Dæmp fuldt navn som streng

Fuldt navn= Fornavn+ Efternavn

MsgBox Fulde navn medarbejder"_&_ Fuldt navn

9. Indbygget besked dialogboks. Eksempel på MsgBox funktion og operator. Der er flere typer dialogbokse, der er nødvendige for at understøtte slutbrugerens interaktive driftstilstand i programmet (visning af beskeder til brugeren, modtagelse og fortolkning af instruktioner indtastet af brugeren osv.). Meddelelsesboksen er betegnet MessageBox (MsgBox), og inputboksen er InputBox. De kan betragtes som funktioner og som en operatør. MsgBox-vinduet er en beskedboks. Det kræver ikke design og kaldes fra programmet med MsgBox-kommandoen og oprettes ved hjælp af MsgBox()-funktionen. Den har følgende syntaks: MsgBox (Promt [, knapper] [,title,helpFile], ), hvor promt er påkrævet parameter, denne linje i meddelelsesboksen. Dens maksimale længde er 1024 tegn. Buttons-parameteren er valgfri; dens værdi er et heltal lig med summen af ​​de værdier, der bestemmer tilstedeværelsen af ​​knapper i meddelelsesvinduet. Standarden er 0. Titelparameteren er titlen på beskedboksen. Hjælpefil – valgfrit, et link til en fil i hjælpesystemet og til en bestemt placering i denne fil. eksempel



Afhængigt af valget af MsgBox-vinduesknapper, returnerer dialogboksen en af ​​værdierne.

10. Indbygget input-dialogboks. Eksempel på InputBox-funktionen. Der er flere typer dialogbokse, der er nødvendige for at understøtte slutbrugerens interaktive driftstilstand i programmet (visning af beskeder til brugeren, modtagelse og fortolkning af instruktioner indtastet af brugeren osv.). InputBox er kun påkrævet som en funktion. Ofte er det nødvendigt at udføre ikke kun et sæt handlinger, men også at indtaste visse oplysninger, der vil blive opfattet af programmet. InputBox-funktionen bruges til dette. Syntaks: InputBox(ptomt, , , , , kontekst])

Promt – en obligatorisk linje, der vises i beskedvinduet, 1024 tegn Titel – valgfri, titel på beskedvinduet Standard – en linje i tekstfeltet, hvis den ikke er der, så er linjen tom Xpos,Ypos – position af øverste venstre hjørne af inputskærmen Hjælpefil – link til filen referenceoplysninger. Dette vindue har altid to knapper som standard: OK og Annuller. Eksempel:

InputBox("Indtast en pris for at sammenligne", "vindue til indtastning af kriterier")

13. Grundlæggende egenskaber og metoder for Range-objektet. Eksempler på programkoder. Et Range-objekt er både et objekt og en samling. Lad os se på de vigtigste egenskaber og metoder for Range-objektet: 1. Adresseegenskab – returnerer områdets adresse som en streng. "B2:P4" A=Range("Salg"). Adresse "B2:P4"

Område ("A1:A10"). Celler(3) 'A3

Område ("A1:D10"). Celler(3, 4) 'D3

Rækkevidde ("A1"). Offset(3, 4) – E4

4. Skrifttype – fungerer både som et objekt og som en egenskab. I dette øjeblik fungerer som en egenskab, og som et objekt har den følgende egenskaber: Størrelse, Navn, Fed, Kursiv.

5. Horisontal justering – vandret justering af celler i området. Egenskaber: xlCenter – centreret; xlLigh – højre kant; xlVenstre – til venstre.

7. Navn – returnerer navnet på området. Denne egenskab giver dig mulighed for at angive områdenavnet i programkoden.

Interval ("A1:D10"). Navn = "Salg"

8. Værdi – returnerer værdien i en områdecelle (bruges kun i forhold til én områdecelle).

Rækkevidde ("A5"). Værdi="Rejserapport"

Udvalgsmetoder: Ryd – Fjerner indholdet og formateringen af ​​en række celler. ClearContents – sletter kun indhold. Kopier – kopierer indholdet af et område til et andet. I dette tilfælde bruges det med et enkelt CopyDestination-argument. Det hjælper dig med at angive, hvor du kopierer hen.

Range(“B4:G25”). CopyDestination:=Range(“E4:F25”). Formler og indhold kopieres. I det tilfælde, hvor du kun skal kopiere numeriske værdier og ikke formler, bruges PastSpecial-metoden. Først kopierer du til udklipsholderen, derefter kopierer du til rækken. 1)Range(“B4:G25”).Kopi 2)Range(“E4:F25”).PastSpecial Paste:=xlPasteValue

Vælg – vælg et område.

Sorter – Bruges til at sortere en række celler. Nøgle1 – efter hvilken kolonne området vil blive sorteret. Ordre1 – sorteringsrækkefølge (stigende, faldende). Overskrift – “ja”, “nej” (Hvis “ja”, så deltager overskriften ikke i sorteringen, hvis “nej”, gør den det). Range(“A1:F25”).Sortér

Key1:=Range(“C2”)

Ordre1:=xlSstigende

Regler for brug af Excel-objekter i programkode. Eksempler på programkoder, der bruger dem.

14. Metoder til at specificere intervaller i vba. Eksempler på programkoder, der angiver intervaller. Når du skriver programkode, skal du være i stand til at bruge en rækkevidde korrekt. Overvej følgende metoder: 1. Brug af adresseområdet (“A1:B4”). 2. Anvendelse af områdenavnet Range ("Salg"). 3. Tildeling af en variabel med navnet på området NSales=Range(“Sales Information”). Navn. 4.Brug af egenskaben Cells Range(“A1:A10”).Cells(3) – A3

Område(“A1:D10”). Celler(3, 4) – D3

5. Indstilling af egenskaben Offset. Ejendommen har 2 argumenter. Når Offset er angivet for et område, fungerer adressen på kun én celle som området. Range(“A5”).Offset(3, 4) – E8

6. Angivelse af det øverste venstre og nederste højre hjørne af området. Range(Range(“C1”), Range(“D10”)).

7.Brug af End-egenskaben. For at vælge et område, hvor kun det øverste venstre hjørne er kendt, kan du bruge egenskaben End. Den peger på det nederste højre hjørne af området.

Med rækkevidde ("A1")

Range(.Cells(1, 1),.End(xlRight).End(xlDown)).Vælg

Med rækkevidde ("A1")

Range(.Offset(1, 1),.End(xlRight)).Navn=”Salg”

Range(.Offset(2, 1),.End(xlDown)).Navn=”Region”

Range(.Offset(2, 2),.End(xlRight)).End(xlDown).Name=”NameSales”

Arbejde med arrays. Option Base operatør. Dynamisk indekseringsmodel og ReDim-operatøren. Eksempler på brug af disse operatorer. Kontrolfunktion Arrays. Eksempel på brug.

I analogi med at arbejde med information i Excel lister, arrays er også lister, hvor hvert element har sit eget indeks. Array-elementerne opfattes af programmet som almindelige variable, men præsenteres som en indekseret liste. I VBA bruges arrays til at behandle lister, da arrays er meget nemmere at administrere programmatisk end lister. Regler for at arbejde med arrays. Option Base – definerer den nedre grænse for ændring af indekset i arrayet. For eksempel Option Base1 – nedre grænse – 1. Denne linje i programkoden er skrevet i modulets generelle område efter Option Explicit operatoren.

I de fleste økonomiske problemer, når man skriver programkode, er det umuligt at kende antallet af elementer på forhånd. For at gøre dette er det muligt ikke at angive programkoden i begyndelsen, når du erklærer et array nøjagtig størrelse. (Dim ProdCode() Som heltal, NProducts As

Heltal.) Så, i procedurens brødtekst, når det nødvendige antal array-elementer allerede er kendt, kan du bruge ReDim-operatoren, som tildeler den strengt nødvendige mængde hukommelse til arrayet. Med ActiveWorkBook.WorkShits("Salg").Range("A3")

NProducts=Range(.Offset(1,0),.End(xlDown)).

ReDim ProdCode(NProducts),UnitPrise(NProducts)

For i=1 til NProducts

ProdCode(i)=.Offset(i,0)

UnitPrise(i)=.Offset(i,1)

ReDim-operatoren i forhold til et specifikt array kan bruges i programkoden så mange gange som nødvendigt. Det eneste problem er, at når du bruger et array på denne måde, går alt, hvad der var i arrayet, tabt. For at undgå dette skal du skrive i operatørposten søgeord Bevare. (ReDim Preserve Sum(NS)). Typisk er fortsættelsen af ​​denne programkode placeringen af ​​data hentet fra art. A- og B-lister i arrays ProdCode og UnitPrice. For at overføre data fra listekolonner til et array skal du organisere en loop. Hvis du har brug for at overføre data til kolonnerne på en liste placeret på et regneark:

(NFound – antal fundet poster)

For i=1 til NFound

Med rækkevidde ("E3")

Offset(j, 0)=ProdCodeFound(j) 'produktkode

Offset(j, 1)=Mængde(j) "mængde af varer

Offset(j, 2)=DollarsTotal(j) 'produktomkostning

Lad os se på Array-konstruktionen. Lad os se på, hvordan denne funktion fungerer ved hjælp af et eksempel. Denne funktion bruges til at udfylde et array. Vi vil overveje dets anvendelse i "Reallån"-programmet.

Sub Array Function()

Dim dage som variant

Days=Array("man", "tir", "on", "tor", "fre", "lør", "søn")

MsgBox “Første dag i ugen: ” & dage(1)

Array-nøgleordet, efterfulgt af en liste i grænser, bruges til at fylde Days-variablen med værdier. Denne variabel er et regulært array, men i Dim-sætningen er det angivet som en regulær variabel af typen Variant, og VBA selv, ved hjælp af Array-funktionen, definerer denne variabel som et array.

16. Modulær opbygning af applikationen ved hjælp af eksemplet på opgavens programkode, som bestemmer den optimale rute for flytning af virksomhedens distributør. Eksempel på brug af modulniveauvariabler. Når du laver store procedurer, opstår der vanskeligheder såsom vanskeligheder med at lære, fejlfinding og genbrug. Det er meget at foretrække at skabe modulære applikationer, som er en samling af relativt små procedurer, der hver udfører en lille delopgave. Hovedproceduren MainProcedure oprettes, og andre procedurer kaldes fra den ved hjælp af Call-erklæringen.

Underhovedprocedure()

Som et eksempel kan du overveje programkoden for en opgave, der bestemmer den optimale rejserute.

Dim Ncities As Integer, Visited() As Boolean, Route() As Integer, TotDist As Integer

Sub GenDistances()

Dim I Som heltal, j Som heltal, Ncities Som heltal

With Range("DistMatrix")

Ncities = .Rows.Count

For I = 1 til Ncities - 1

For j = I + 1 Til Ncities

Celler(I, j) = Int(Rnd * 100) + 1

For I = 2 Til Ncities

For j = 1 til I - 1

Celler(I, j) = .Cells(j, I)

Underhovedprocedure()

Ring til GetProblemSize

Ring til PerformHeuristic

Ring til Displayresultater

Sub GetProblemSize()

Ncities = Range("DistMatrix"). Rows.Count

ReDim besøgt (Nities)

ReDim-rute(Nities + 1)

Underinitialiser()

Dim I Som heltal

Rute(Ncities + 1) = 1

Besøgt(1) = Sandt

For I = 2 Til Ncities

Besøgt(I) = Falsk

Sub PerformHeuristic()

Dim Step As Integer, I As Integer, NowAt As Integer, NextAt As Integer, MinDist As Integer

For Trin = 2 Til Ncities

For I = 2 Til Ncities

Hvis jeg<>NowAt And Visited(I) = Falsk Dengang

If Range("DistMatrix").Cells(NowAt, I)< MinDist Then

MinDist = Range("DistMatrix").Cells(NowAt, NextAt)

Rute(Trin) = NæsteAt

Besøgt(NextAt) = Sandt

TotDist = TotDist + MinDist

TotDist = TotDist + Range("DistMatrix"). Celler (NuAt, 1)

Undervisningsresultater()

Dim trin som heltal

For Trin = 1 Til Ncities + 1

Range("B19"). Offset(Trin, 0) = Rute(Trin)

MsgBox "Total distance:" & TotDist, vbInformation, "total distance"

Brug af modulniveauvariabler. Overvej et program, der illustrerer brugen af ​​variabler på modulniveau.

På et Excel-regneark skal du oprette en liste og give den et navn - Navn.

Dim Fornavn som streng, efternavn som streng

Dim I Som heltal

Fornavn=Range(“Navn”).Cells(i, 1)

Efternavn=Range(“Navn”).Cells(i, 2)

Ring til DisplayName

Undervisningsnavn()

Dæmp fuldt navn som streng

FullName=Fornavn+Efternavn

MsgBox "Medarbejders fulde navn: " & fulde navn

17. Udvikling af en brugergrænseflade: en formular som en brugerdefineret dialogboks. Udvikling af en formular ved hjælp af eksemplet med formularen "Produktinformation". Viser brugerformularen. En tilpasset dialogboks er en formular, der indeholder kontrolelementer, herunder kommandoknapper, alternativknapper, tekstfelter og andre. Det giver brugeren input af information, der kræves for, at applikationen kan fungere. Overvej et typisk eksempel på en formular, der ofte findes i applikationer.

Formularen indeholder 3 hændelseshandlere:

1. UserForm_Initialize

2. OkButton_Click

3. CancelButton_Click

I denne applikation, når du åbner en formular, skal du opnå følgende adfærd: Moskva- og Tog-omskifterne skal være aktive, afkrydsningsfeltet Forgængelig er markeret, og afkrydsningsfeltet Fragile er ryddet, kundelisten skal være udfyldt med kildedata. Når du arbejder med en liste, kan du udfylde den på forskellige måder. F.eks. udfyld det med data, der findes i regnearkets celler. For at gøre dette skal du oprette et område på regnearket og give det et navn (Navn - Kunde). Når du udfylder listen, skal du bruge AddItem. Før du skriver koden til Initialize-hændelsen, lad os se på egenskaberne for kontrolelementerne: brugerformular - Pant; tekstfelt – ProductBox; switches – MoscowOption, VoronegOption, TrainOption, TruckOption; afkrydsningsfelter – PerishBox, FragilBox; liste – Kundeliste.

Dim celle som variant

ProductBox = " "

MoscowOptions.Value = Sand

TrainOptions.Value = Sand

PerishBox = Sand

FragilBox = Falsk

Der er en anden måde at fuldføre listen på. RowSource-egenskaben, åbnes et vindue, hvorfra du skal indtaste elementer én efter én.

Form visning. I modsætning til VB vises formularen i VBA ikke automatisk på skærmen, når applikationen startes. For at kalde formularen til arbejdsarket skal du bruge Vis metoden. For at gøre dette skal du oprette en knap på regnearket, der viser formularen på regnearket, og skrive koden:

Underknap1_Klik()

Pant. At vise

18. Behandling af formularhændelser: oprettelse af kode til behandling af UserForm_Initialize, CanselButton_Click hændelser ved at bruge eksemplet med behandling af disse hændelser til brugerformularen "Produktinformation".

1. UserForm_Initialize

2. OkButton_Click

3. CancelButton_Click

1 udvikler bestemmer udseendet af formularen, når den åbnes, og resten giver svaret på et klik på knappen. "Ok" og "Annuller".

UserForm_Initialize handlerkode.

I denne applikation, når du åbner en formular, skal du opnå følgende adfærd: Moskva- og Tog-omskifterne skal være aktive, afkrydsningsfeltet Forgængelig er markeret, og afkrydsningsfeltet Fragile er ryddet, kundelisten skal være udfyldt med kildedata. For at udfylde listen på regnearket skal du oprette en række og give den navnet Kunder. I programkoden vil vi bruge AddItem-metoden. Før du skriver koden til Initialize-hændelsen, lad os se på nogle af kontrolelementernes egenskaber: brugerformular - Mortgage; tekstfelt – ProductBox; switches – MoscowOption, VoronegOption, TrainOption, TruckOption; afkrydsningsfelter – PerishBox, FragilBox; liste – Kundeliste.

Private Sub UserForm_Initialize()

Dim celle som variant

ProductBox = " "

MoscowOptions.Value = Sand

TrainOptions.Value = Sand

PerishBox = Sand

FragilBox = Falsk

For hver celle inden for rækkevidde ("Kunder")

CustomersList.AddItem cell.Value

For knappen "Annuller" skal du skrive følgende kode:

Private Sub CanselButton_Click()

Unload.Me - Denne metode fjerner formularen fra RAM og fjerner den fra skærmen.

19. Behandling af formularhændelser: oprettelse af kode til behandling af OkButton_Click-hændelsen ved at bruge eksemplet på behandling af denne hændelse til brugerformularen "Produktinformation". En hændelse er en handling genkendt af et objekt, som et svar kan programmeres til.

Lad os se på formularen "Produktdetaljer". Den indeholder 3 hændelseshandlere:

1. UserForm_Initialize

2. OkButton_Click

3. CancelButton_Click

1 udvikler bestemmer udseendet af formularen, når den åbnes, og resten giver svaret på et klik på knappen. "Ok" og "Annuller".

OkButton_Click procedure kode. Typisk bruges denne hændelseshandler til at gemme data, der er indtastet i kontroller. Som regel indtastes oplysninger, der er indtastet i kontroller, i offentlige variabler, der er defineret i modulet, og derefter anvendes disse variable i modulets programkoder. Produktkode – kode indtastet i feltet; Region – udgangspunkt; Forsendelse – transport; IsPerish – letfordærvelig; IsFragil – skrøbelig; Kunder – smil.

Dim ProductCode As Integer, Region As String, Shipping As String, IsPerish As Boolean, IsFragile As Boolean, Customers As String

Privat under OkButton_Click()

Hvis .Value = " " eller ikke IsNewmeric(.Value) Så

MsgBox "Produktkode ikke indtastet eller ikke numerisk"

ProductCode=ProductBox. Værdi

Hvis Produktkode< 1 Or ProductCode >1000 så

MsgBox "Produktkode skal være i området fra 1 til 1000"

SetFocus 'placerer markøren i et felt

Afslut Sub 'afslut proceduren

Hvis TrainOption.Value = Sand Så

Forsendelse = "tog"

Forsendelse = "Lastbil"

Hvis MoscowOption.Value = Sand Så

Region = "Moskva"

Region = "Voroneg"

IsPerish = PerishBox.Value

IsFragile = FragilBox.Value

Med CostomerList 'arbejde med en liste

Hvis .ListIndex<>-1 Så

Kunder = Kundeliste.Værdi

MsgBox "Element på listen er ikke valgt"

20. Hvis-så-ellers beslutningsstruktur

Betinget operatør If-Then-Else ændrer rækkefølgen af ​​programmets udførelse afhængigt af resultaterne af test af en eller anden betingelse.

Sub LookUpPrice()

ReDim ProdCode(Nproducts)

ReDim enhedspris (Nprodukter)

For i = 1 til Nprodukter

ProdCode(i) = .Offset(i, 0)

Enhedspris(i) = .Offset(i, 1)

ReguestedCode = InputBox("Indtast produktkode (stor latinsk bogstav og 4 cifre)")

Fundet = Falsk

For i = 1 til Nprodukter

Hvis ProdCode(i) = ReguestedCode Så

Fundet=Sandt

ReguestedPrice = UnitPrice(i)

Afslut for

Hvis fundet så

MsgBox "Product with code" & ReguestedCode & "cost" & Format(ReguestedPrice, "0.00r."), vbInformation, "Product not found"

MsgBox "Produkt med kode " & ReguestedCode & " er ikke på listen", vbInformation, "Produkt ikke fundet"

21. Yderligere tilstand ElseIf

Ved at bruge If-Then-Else-beslutningsstrukturen kan du organisere udførelsen af ​​udsagn afhængigt af, om en bestemt betingelse er opfyldt. Lad os se på en anden use case, denne gang med søgeordet ElseIf. Proc31-programmet viser en adgangskodeprompt. Hvis adgangskoden er indtastet korrekt, giver programmet brugeren visse muligheder for at arbejde med projektmappen og informerer ham om dette.

Sub Proc31_IfThenElseIf()

Dim adgangskode som streng, ws som arbejdsark

Adgangskode = GetPassword

Hvis adgangskode = "niveau1" Så

For hver var i ActiveWorkbook.WorkSheets

ws.Synlig = Sand

MsgBox "Du har adgang til alle ark i projektmappen."

ElseIf Password = "level2" Så

ActiveWorkbook.Worksneets(1). Ophæv beskyttelsen

MsgBox “Du har kun adgang til det første ark arbejdsbog.”

ElseIf Password = "level3" Så

ActiveWorkbook.Worksneets(1). Synligt = Sandt

MsgBox "Du har fået skrivebeskyttet adgang til indholdet af det første ark i projektmappen."

MsgBox "Adgangskoden er ikke korrekt. Indtast venligst din adgangskode igen."

Funktion GetPassword()

I Proc31 bruges Elself nøgleordet efterfulgt af en betingelse to gange. Den nye betingelse foretager yderligere ændringer i rækkefølgen af ​​kommandoudførelse, hvis kontrollen af ​​den første betingelse mislykkes. I Proc31 er den første betingelse angivet umiddelbart efter nøgleordet If. Den kontrollerer, om kodeordsvariablen er lig med strengen "niveau". Hvis variablen ikke er lig med strengen, går VBA til det første søgeord Elself, hvor den kontrollerer følgende betingelse - Password-variablen er lig med strengen "level2". Fra dette øjeblik bruger programmet kun den nye betingelse, "glemmer" om den gamle. Hvis der ikke er lighed igen, går kontrollen videre til det næste søgeord Elself, etc.

Linje 3 i Proc31 kalder GetPassword-funktionen, som bruger de nye elementer. Lad os vende tilbage til det igen.

Funktion GetPassword()

GetPassword = Lcase (InputBox(“Indtast adgangskode:”.” Adgangskode”))

Her angives i anden linje kald til to indbyggede funktioner VBA-Lcase og InputBox. Den første konverterer alle bogstaver i strengen, der sendes til den, til små bogstaver. Den anden viser en dialogboks, der beder om brugerinput. Denne funktion har flere valgfrie argumenter, hvoraf vi kun er interesserede i de to første. En af dem er en linje, der vises i vinduet over indtastningsfeltet. Den anden indeholder titellinjen i dialogboksen. Når funktionen Input-Box kaldes, vises en dialogboks på skærmen med den angivne titel og prompttekst, og den indeholder også et tomt felt, hvor brugeren kan indtaste data. Den værdi, der returneres af InputBox, afhænger af, hvilken knap brugeren klikker på. Hvis det er OK, returneres den indtastede linje, hvis den er Annuller, så er den tom. I vores eksempel sendes bogstaverne i denne streng til Lcase-funktionen, som konverterer dem til små bogstaver. I blokken, der begynder umiddelbart efter nøgleordet If, er der en For-Each-Next-løkke (den er beskrevet detaljeret nedenfor i afsnittet " Kontrolstruktur For-Hver-Næste"). I denne cyklus gentages alle ark i den aktive projektmappe, to handlinger udføres på hver af dem: Egenskaben Visible tildeles værdien True, og metoden Unprotect kaldes. Den første handling giver brugeren mulighed for at se arket, den anden fjerner adgangskodebeskyttelse fra arket. Metoden Unprotect har ét argument - en adgangskodestreng. Men i dette tilfælde brugte vi ikke en adgangskode til at beskytte arkene, så Unprotect kaldes uden argumenter. I andre blokke af programmet Synlig ejendom og Unprotect-metoden kaldes selektivt, afhængigt af den indtastede adgangskode.

22. For-Next kontrolstruktur

Det giver dig mulighed for at udføre flere kommandoer et bestemt antal gange.

Sub LookUpPrice()

Dim ProdCode() Som String, UnitPrice() Som Valuta, ReguestedPrice Som Valuta, Nproducts Som Integer, i Som Heltal, Fundet Som Boolean, ReguestedCode Som String

Med ActiveWorkbook.Worksheets("Produktkoder").Range("A3")

Nproducts = Range(.Offset(1, 0), .End(xlDown)).Rows.Count

ReDim ProdCode(Nproducts)

ReDim enhedspris (Nprodukter)

For i = 1 til Nprodukter

ProdCode(i) = .Offset(i, 0)

Enhedspris(i) = .Offset(i, 1)

Slut med

ReguestedCode = InputBox("Indtast produktkoden (store bogstaver og 4 cifre)")

For i = 1 til Nprodukter

Hvis ProdCode(i) = ReguestedCode Så

ReguestedPrice = UnitPrice(i)

MsgBox "Product with code" & ReguestedCode & "cost" & Format(ReguestedPrice, "0.00r."), vbInformation, "Product not found"

MsgBox "Produkt med kode " & ReguestedCode & " er ikke på listen", vbInformation, "Produkt ikke fundet"

23. While-Wend kontrolstruktur

Dens handling ligner For-Next-handlingen, men gruppen af ​​operatører udføres ikke et bestemt antal gange, men indtil en bestemt betingelse er opfyldt. I Proc34-programmet bruges While-Wend-sætningen til at udtrække en specifik værdi fra en sekvens af tilfældige tal.

Sub Proc34_WhileWend()

Dim LotteryEntry Som heltal

Lotteriindgang = 0

Mens LotteryEntry<> 7

LotteryEntry = Int(10*Rnd())

MsgBox "Dit nummer er "&LotteryEntry&". Du vandt!!"

Det sikrer Proc34-programmet informationsvindue det angivne nummer vises altid. While-Wend-løkken kører, indtil værdien af ​​LotteryEntry-variablen er lig med 7 (betingelsen bruger ulighedsoperatoren<>). Hver gang løkken udføres, tildeles denne variabel en tilfældig værdi fra 1 til 9, og derefter ved hjælp af VBA-bip-funktionen, lydsignal igennem intern højttaler computer. Når du kører dette program flere gange, kan du høre et forskelligt antal bip, afhængigt af på hvilket trin tilfældige talgeneratoren returnerer tallet 7.

Lad os se nærmere på strukturen af ​​While-Wend-løkken.

Mens søgeord, start af While-Wend struktur

Lotteriindgang<>7 En betingelse, der bestemmer, om løkken skal udføres eller ej. Hvis det er opfyldt, udføres loopet; hvis ikke, overføres kontrollen til operatøren forud for Wend nøgleordet

LotteryEntry=Int(10*Rnd()) Første organoperatør

Bip Andet kropsoperatør

Wend-søgeord, der markerer slutningen på en While-Wend-struktur

Introduktion til VBA programmeringssystem. Objektmodel Excel, hovedobjekter E. Kort beskrivelse af dem.

VB og VBA er ikke det samme. VB er et softwareudviklingssprog, der bruges separat fra MS Office. VBA er inkluderet i MS Office-pakken. Ved at installere det får du adgang til VBA. Det er nødvendigt for at administrere MS Office-data.

VBA-sproget understøtter alle de grundlæggende elementer i ethvert andet programsprog: 1) variabler 2) arrays 3) subrutiner 4) kontrolstrukturer 5) evnen til at oprette brugere. datatyper mv.

VBA yavl. visuelt og begivenhedsdrevet programmeringssprog. Det har evnen til at oprette formularer med kontrolelementer og skrive procedurer, der behandler hændelser. VBA giver dig mulighed for at arbejde med et stort sæt objekter. VBA understøttes af applikationer som Access, PowerPoint, Word osv. Hver applikation har sit eget sæt objekter. I Access: formularer, forespørgsler, rapporter, tabeller; i Word: afsnit, fodnote; i PowerPoint-dias. Hvert program understøtter sin egen version af VBA.

VBA adskiller sig fra andre programmeringssprog ved, at det giver mulighed for direkte at arbejde med alle MS Office-objekter. Den har et grafisk arbejdsbord, der giver dig mulighed for at oprette skærmformularer og kontroller.

Alle Excel-elementer er objekter, som du skal arbejde med i programmet. De mest almindeligt anvendte objekter er WorkBooks, WorkSheets og Ranges. WorkSheets-objektet har en Name-egenskab, men Range-objektet har ikke en særskilt samling. Fungerer som en samling og som et objekt. Oftest brugt I programkode har den enorme muligheder.

2. Objektmodel Excel: begrebet objekt, metode, egenskab, begivenhed.

Objekt Excel model er grundlaget for programstrukturen. Uden at oprette en hierarkisk struktur af programobjekter kan du ikke bruge VBA i Excel.

Alle Excel-elementer er objekter, som du skal arbejde med i programmet. De mest almindeligt anvendte objekter er WorkBooks, WorkSheets og Range ckarts.

Egenskaber definerer et objekts udseende og tilstand. For at definere en egenskab skal den angives til højre for objektnavnet, adskilt af en prik. Range(“A1”).Værdi – egenskaben beskriver indholdet af celle A1. Der er 2 typer operationer, når man arbejder med egenskaber: 1) at tildele en værdi til en ejendom. Objekt.Ejendom=<значение>

Range(“A1”).Værdi= “Turrapport”. 2) den resulterende egenskab er tildelt en variabel. Variabel=Objekt.Ejendom

Var= Range(“A1”).Værdi

Et objekts metoder afslører de opgaver, som objektet kan udføre. Object.Method – når metoden ikke har nogen parametre. Range(“A1”).CleanContenst – rydder området, men bevarer formateringen. Hvis en metode har argumenter, er de anført efter metodenavnet.

En hændelse er en handling genkendt af et objekt, som et svar kan programmeres til. Essensen af ​​programmering i VBA ligger i 2 koncepter: en begivenhed og en reaktion på den.

Egenskaber og metoder kan være indbyrdes forbundne: udførelse af en metode får en egenskab ved objektet til at ændre sig, og ændring af en egenskab kan forårsage en hændelse.

3. VB editor. Projekt vindue. Kode redigering vindue. Vinduet til formularredigering. Elementer panel. Egenskaber vindue. Objektvisningsvindue. Øjeblikkeligt, se vinduer. Redaktør VB= Visual Basic Redaktør. Der er ikke sådan noget som en VBA-editor! For at starte denne editor skal du åbne Excel-applikationen og udføre kommandoen Tools/Macro/VB Editor eller Alt+F11. For at vende tilbage til Excel skal du trykke på Alt+F11 igen. I VBA-vinduet, der åbnes: titellinje, menu, værktøjslinjer og flere vinduer.

Som standard er øverste venstre hjørne projektvindue. Du kan vise det ved at bruge kommandoen View/Project Explorer. Dette vindue indeholder en liste over alle åbne projekter og en liste over alle deres komponenter. Et projekt indeholder altid 3 moduler (på hvert ark) og et bogmodul. Alle moduler er opdelt i: 1) standard – tilføjet til Insert/Module-projektet. De indeholder makroer, funktioner og procedurer. 2) objektmoduler – moduler tilknyttet projektmapper, regneark og formularer. Et VBA-projekt består af objekter, der har hierarkisk struktur, og inkluderer: Excel-objekter, formularer, standardmoduler og klassemoduler. Kode redigering vindue. I projektvinduet skal du vælge det objekt, som programkoden skal indtastes for. Kør derefter kommandoen View/Code. Et vindue åbnes, hvor du skal indtaste programkoden. Vinduet til formularredigering. Sådan får du vist formularen: Indsæt/Brugerformular. En formular vises på skærmen. Egenskaber vindue. For at åbne: Vis/Egenskaber vindue. Venstre side af vinduet viser objektets egenskaber, og højre side viser værdierne af egenskaber, der kan ændres. Objektvisningsvindue. Vis/objektbrowser eller F2. I det øverste venstre hjørne af vinduet, der åbnes, er der en liste over Excel-objektmodelbiblioteker. Den giver information om alle Excel-objekter, deres egenskaber og metoder.

Elementer panel(View/Dwbug) i standardversionen inkluderer forskellige klasser af kontrolelementer: CommandButton (kommando-knap), TextBox, Label osv. Det er muligt at supplere panelet ved at bruge kommandoen Tools/Additional Controls.

Vinduet Umiddelbart er et af fejlfindingsværktøjerne. Designet til direkte kommandoinput. Overvågningsvindue – programudførelsesrækkefølge og fejlsporing.

4. Oprettelse af et simpelt program ved hjælp af eksemplet med applikationen "Salgsoplysninger efter region". Opgave: Opret et program, der sporer salg i hver region. For hver region skal du vise en meddelelse med antallet af måneder, hvor salget oversteg den angivne mængde, som brugeren har indtastet. Fremgangsmåde: åbn Excel og opret en liste på det første ark, der ser sådan ud:

EN I MED G
måned Region 1 Region 2 Region 3
januar 2005
….
dec 2006

Formatér kolonner (1 – dato, resten – valutaformat). Udfyld listen. Vælg derefter celleområdet B2:G25 og navngiv det SalesRange. Gå til wb-editoren: Alt+F11 eller Tools/Macro/Wb Editor. Hvis der ikke er noget vindue, skal du køre kommandoen View/Project Explorer. Udfør derefter Insort/Module, et redigeringsvindue åbnes. Indtast følgende programkode:

Sub CountHighSales()

Dim i Som heltal, j Som heltal, ks Som heltal, s Som valuta

s = InputBox("Indtast pris for at sammenligne", "boks til indtastning af kriterier")

If Range("SalesRange").Cells(j, i) >= s Then

MsgBox "i regionen "&i&" oversteg salget "&s&" i "&ks&" måneder"

Kør programmet til udførelse: F5 eller Run/Run Sub. Et InputBox-vindue vises på skærmen. Start programmet ved at bruge knappen på arbejdsarket. Mens du er på regnearket, skal du udføre kommandoen Vis/Værktøjslinjer/Formularer. I vinduet, der vises, skal du vælge Knapelementet og tegne det på arbejdsarket. Et vindue åbnes, hvor du bliver bedt om at oprette en makro, vælge navnet CountHighSales og lukke. Giv din knap et navn. Klik på denne knap for at starte programmet.

Du kan oprette et program på en anden måde, begyndende med at placere en knap. Vinduet "Tildel makro til objekt" vises. Klik på knappen Opret. VBE-editoren starter, og vinduet til redigering af makrokode åbnes. Indtast programkoden.

5. Standard elementer VB kontroller: begreber, egenskaber, metoder, begivenheder fælles for disse elementer Kort beskrivelse af kontroller. Kontrolelementer er objekter, der kan placeres på en formular. Som alle objekter har de egenskaber, metoder og begivenheder. Egenskaber bestemmer udseende og adfærd.

Grundlaget for Excel-objektmodellen er Worksheet-objektet, som repræsenterer et enkelt regneark i en fil. Hvert regnearksobjekt er en del af en regnearksamling, som hører til et projektmappeobjekt, der repræsenterer en Excel-projektmappefil. Siden i Excel applikation Flere projektmapper kan være åbne på samme tid, og der er også en projektmappesamling, der indeholder ét projektmappeobjekt for hver åben fil. Som med alle Office-applikationer sidder Application-objektet øverst i objekthierarkiet og er tilgængeligt som en implicit reference, når du arbejder i Excel.

Der er en anden type ark i Excel-projektmapper - et diagramark (diagramobjekt) - en speciel tabel, der kun indeholder et diagram. Program-objektets diagramsamling giver adgang til alle diagrammer for alle åbne filer, mens diagramsamlingen for projektmappeobjektet kun giver adgang til diagrammerne i en given projektmappe. Diagrammer kan også indlejres i regneark i stedet for at have deres eget regneark. Sådanne diagrammer er ikke en del af diagramsamlingen, men er i stedet tilgængelige som en del af Chartob-jects-samlingen af ​​Worksheet-objektet. Sheets-samlingen giver adgang til alle arbejdsark, både tabeller og diagrammer.

Det meste af det, du gør i Excel, involverer Range-objektet. Selvom navnet på dette objekt er det samme som dets modstykke i Word, er deres sammensætning forskellige. Dens funktioner er dog næsten de samme: Indramning af den del af dokumentet, som arbejdet udføres med. Et område kan være en enkelt celle, en todimensional blok af celler på et regneark eller en tredimensionel blok af celler, der spænder over flere regneark.

En anden vigtig integreret del Excels objektmodel er diagramobjektet. Der er et diagramobjekt indeholdt i diagramsamlingen for hvert diagram i projektmappen. Hvert diagramobjekt har et undersæt af objekter, der repræsenterer diagrammets komponenter, såsom akser og forklaring.

Vi vil ændre vores makro, gå til menupunktet "makroer", vælg vores og sig "rediger":

Dim bog som streng

Dim ark Som String

Dim addr As String

bog = Application.ActiveWorkbook.Name

ark = Application.ActiveSheet.Name

Arbejdsbøger(bog).Aktivér

Arbejdsark(ark).Aktivér

Range("A1") = bog

Range("B1") = ark

Dim xList som heltal

xList = Application.Sheets.Count

For x = 1 Til xList

s = addr + LTrim(Str(x))

VBA-programmering kan opfattes som styring af applikationsobjekter. Det er de objekter, som vores applikation administrerer. I vores tilfælde, hvis vi forenkler den hierarkiske arkitektur, ser det sådan ud.

Det vil sige, at hovedobjektet er applikationen. En applikation kan have flere projektmapper, inde i hvilke der er arbejdsark, og arkene er opdelt i celler. Når du arbejder, kan kun én projektmappe og ét ark være aktive. Så jeg prøver at finde ud af det med min makro. Og samtidig hvor mange ark der er i den aktuelle bog.

DIM - erklærer en variabel af typen streng. Ved at bruge applikationsobjektet får vi navnene på de aktuelle projektmapper og ark. Ved at bruge Range("...") kan du vælge en celle og placere værdier i den eller læse dem. Generelt har objekter et stort antal egenskaber. VBA-programmørens opgave er at kende disse egenskaber og metoder.

Foredrag MS Excel Object Model.

1. Generelle karakteristika for MS Excel-objektmodellen

2. Egenskaber ved objekter

3. Arbejde i VBA-miljø. Håndtering af objektegenskaber

Introduktion

Excel-regnearksprocessoren er et program med en lang række muligheder, hvoraf de fleste du kender. Udover dette har udviklerne dog inkluderet tilpasningsværktøjer for at øge effektiviteten af ​​løsningen af ​​specifikke problemer. Disse værktøjer omfatter forskellige indstillinger, værktøjer til automatisering af brugerhandlinger (makroer) samt et indbygget VBA-programmeringssystem. Selve applikationen er udviklet ved hjælp af OOP, og VBA giver adgang til programobjekter, så en kvalificeret bruger har næsten ubegrænsede muligheder for at tilpasse denne applikation. I denne og de næste lektioner vil vi introducere dig til, hvordan dette kan bruges.

1. Generelle karakteristika for objektmodellenFRKExcel

OOP er bygget op omkring brugen af ​​objekter. Virkelige objekter i den omgivende verden har to hovedkarakteristika: de har et sæt egenskaber og er i stand til at ændre disse egenskaber ved hjælp af forskellige metoder og reagere på begivenheder, der opstår både i den omgivende verden og i selve objektet. Det er i denne form, at begrebet et objekt implementeres i programmeringssprog, som et sæt egenskaber (datastrukturer, der er karakteristiske for dette objekt) og metoder til at behandle dem (rutiner til ændring af egenskaber).

Egenskaber er parametre, der beskriver et objekt. Egenskaber identificerer for eksempel et objekt, bestemmer dets udseende, placering på skærmen og dimensioner.

Metoder er handlinger udført af et objekt, dets fungerende operatører. Generelt er metoder procedurer (handlinger), der kan udføres, og egenskaber er attributter, der kan indstilles af brugeren eller systemet.

Ved afvikling af OOP-programmer implementeres hændelsesprincippet, hvis essens er, at programobjekter kan reagere på hændelser, der opstår i systemet. Hændelser er meddelelser, der bestemmer rækkefølgen af ​​et programs handlinger. Hændelser kan være af forskellig karakter - museklik, flytning af musemarkøren, indtastning eller ændring af data, klik på knapper i programvinduer eller på tastaturtaster, program- og systemfejl osv. Reaktionen består i at udføre en af ​​objektets metoder. De fleste objekter er karakteriseret ved en klikhændelse, som opstår, når du klikker med venstre museknap på det valgte objekt. Følgende begivenheder er også karakteristiske: DblClick (dobbeltklik), MouseDown, MouseUp (tryk og slip museknappen), Exit og Enter (mister og får fokus) og mange andre.

Programmørens opgave ved oprettelse af et program er at inkludere de nødvendige objekter i programmet fra alle tilgængelige objekter, fastlægge en liste over hændelser, som programmet skal reagere på, og angive hvilke metoder, der skal bruges, når hver hændelse indtræffer.

Hvis der ikke er noget objekt med de nødvendige egenskaber, kan programmøren oprette et sådant objekt og efterfølgende bruge det i dette eller et andet program.

Når du tilpasser en applikation, er der ingen grund til at oprette nye objekter; det er nok at bruge eksisterende. Du skal bare kende dem. En idé om sammensætningen og relationerne mellem objekter er givet af applikationsobjektmodellen. Hver applikation har sin egen.

MS Excel objektmodellen er et hierarki af objekter underordnet objektet Ansøgning, som svarer til selve ansøgningen.

Antallet af genstande er ret stort, de danner en trælignende struktur (mindre grene er egenskaber for større). Roden til dette "træ" (det oprindelige objekt) er Application (selve MS Excel-applikationen).

Nogle objekter er enkeltstående (det vil sige, de findes i en enkelt kopi), og nogle er medlemmer af samlinger (familier). For enkelte objekter er det nok at angive navnet, og for familiemedlemmer - familienavnet og nummeret eller navnet på familiemedlemmet.


Nedenfor er nogle af de MS Excel-objekter, som vi vil bruge i vores programmer.

Ris. 1. Forenklet Excel-objektmodel

I denne figur, for familier, er navnene på objekter fra familierne skrevet i parentes.

For at få adgang til en egenskab eller metode for et objekt (objektreference), kan enten en fuld eller en implicit reference bruges.

En fuld reference består af en række indlejrede objektnavne (ifølge et hierarki). En prik bruges som navneadskiller. For eksempel en fuld reference til celle A5 i et regneark Ark 1 arbejdsbog Bog 1(og for eksempel at skrive tallet 10 ind i det) i opgaveoperatøren har formen:

Application.Workbooks("Bog1").Arbejdsark("Ark1"). Range("A5") = 10

Semester Excel objekter(bredt forstået som Excel-objektmodellen) omfatter de elementer, der udgør enhver Excel-projektmappe. Det er for eksempel arbejdsark ( Arbejdsark), strenge ( Rækker), kolonner ( Kolonner), celleområder ( Områder) og selve Excel-projektmappen ( Arbejdsbog) inklusive. Hvert Excel-objekt har et sæt egenskaber, der er en integreret del af det.

For eksempel objekt Arbejdsark(arbejdsark) har egenskaber Navn(Navn), Beskyttelse(beskyttelse), Synlig(sigtbarhed), Rulleområde(rulleområde) og så videre. Således, hvis du under udførelsen af ​​en makro skal skjule regnearket, skal du bare ændre egenskaben Synlig dette ark.

I Excel VBA er der en speciel type objekter − kollektion. Som navnet antyder, refererer en samling til en gruppe (eller samling) af Excel-objekter. For eksempel en samling Rækker er et objekt, der indeholder alle rækkerne i regnearket.

Alle større Excel-objekter kan tilgås (direkte eller indirekte) gennem objektet Arbejdsbøger, som er en samling af alle aktuelt åbne projektmapper. Hver projektmappe indeholder et objekt Ark– en samling, der omfatter alle arbejdsarkene og diagramarkene i projektmappen. Hver genstand Arbejdsark består af en samling Rækker– det inkluderer alle linjer i regnearket og samlinger Kolonner– alle kolonner i regnearket og så videre.

Følgende tabel viser nogle af de mest brugte Excel-objekter. En komplet liste over Excel VBA-objekter kan findes på Microsoft Office Developer-webstedet (på engelsk).

Et objekt Beskrivelse
Ansøgning Excel applikation.
Arbejdsbøger En samling af alle aktuelt åbne projektmapper i den aktuelle Excel-applikation. En specifik projektmappe kan tilgås gennem et objekt Arbejdsbøger ved at bruge det numeriske indeks for projektmappen eller dens navn, f.eks. Arbejdsbøger (1) eller Arbejdsbøger ("Bog1").
Arbejdsbog Et objekt Arbejdsbog- Dette er en arbejdsbog. Den kan tilgås gennem samlingen Arbejdsbøger ved hjælp af et numerisk indeks eller projektmappenavn (se ovenfor). For at få adgang til den aktuelt aktive projektmappe kan du bruge Aktiv arbejdsbog.

Fra objekt Arbejdsbog du kan få adgang til objektet Ark, som er en samling af alle ark i en projektmappe (regneark og diagrammer) samt et objekt Arbejdsark, som er en samling af alle arbejdsark Excel-projektmapper.

Ark Et objekt Ark er en samling af alle ark i en projektmappe. Disse kan enten være arbejdsark eller diagrammer på et separat ark. Få adgang til et individuelt ark fra en samling Ark kan fås ved hjælp af arkets numeriske indeks eller dets navn, f.eks. Ark(1) eller Ark ("Ark1").
Arbejdsark Et objekt Arbejdsark er en samling af alle regnearkene i en projektmappe (det vil sige alle regnearkene undtagen diagrammerne på et separat ark). Få adgang til et individuelt regneark fra en samling Arbejdsark kan fås ved hjælp af regnearkets numeriske indeks eller dets navn, f.eks. Arbejdsark(1) eller Arbejdsark ("Ark1").
Arbejdsark Et objekt Arbejdsark er et separat regneark i en Excel-projektmappe. Det kan tilgås ved hjælp af regnearkets numeriske indeks eller regnearksnavn (se ovenfor).

Derudover kan du bruge ActiveSheet for at få adgang til det aktuelt aktive arbejdsark. Fra objekt Arbejdsark du kan få adgang til objekter Rækker Og Kolonner, som er en samling af genstande Rækkevidde, der refererer til rækker og kolonner i regnearket. Du kan også få adgang til en enkelt celle eller en række tilstødende celler på et regneark.

Rækker Et objekt Rækker er en samling af alle rækkerne i et regneark. Et objekt Rækkevidde, der består af en enkelt regnearkslinje, kan tilgås med det linjenummer, f.eks. Rækker (1).
Kolonner Et objekt Kolonner er en samling af alle kolonnerne i et regneark. Et objekt Rækkevidde, der består af en enkelt regnearkskolonne, kan tilgås ved det kolonnenummer, f.eks. Kolonner(1).
Rækkevidde Et objekt Rækkevidde er et vilkårligt antal tilstødende celler på et regneark. Dette kan være én celle eller alle celler i arket.

Et område bestående af en enkelt celle kan tilgås gennem et objekt Arbejdsark bruge ejendom Celler, For eksempel, Arbejdsark.Celler(1,1).

På en anden måde kan en reference til et område skrives ved at angive adresserne på start- og slutcellerne. De kan skrives adskilt af et kolon eller komma. For eksempel, Arbejdsark.Range(“A1:B10”) eller Arbejdsark.Range(“A1”, “B10”) eller Arbejdsark.Range(Cells(1,1), Cells(10,2)).

Bemærk venligst hvis adressen Rækkevidde den anden celle er ikke angivet (f.eks. Arbejdsark.Range(“A1”) eller Arbejdsark.Range(Cells(1,1)), så vil et område bestående af en enkelt celle blive valgt.

Tabellen ovenfor viser, hvordan Excel-objekter tilgås gennem overordnede objekter. For eksempel kan en reference til en række celler skrives sådan:

Arbejdsbøger("Bog1").Worksheets("Ark1").Range("A1:B10")

Tildeling af et objekt til en variabel

I Excel VBA kan et objekt tildeles en variabel ved hjælp af et nøgleord Sæt:

Dim DataWb As Workbook Set DataWb = Workbooks("Book1.xlsx")

Aktivt objekt

Der er et aktivt objekt i Excel til enhver tid Arbejdsbog er projektmappen åben i øjeblikket. Ligeledes er der et aktivt objekt Arbejdsark, aktivt objekt Rækkevidde og så videre.

Se aktivt objekt Arbejdsbog eller Ark i VBA-kode kan du gøre sådan: Aktiv arbejdsbog eller ActiveSheet og til det aktive objekt Rækkevidde- Hvordan så Udvælgelse.

Hvis VBA-koden indeholder en reference til et regneark uden at angive, hvilken projektmappe den tilhører, er Excel som standard den aktive projektmappe. På samme måde, hvis du refererer til et område uden at angive en specifik projektmappe eller et specifikt ark, vil Excel som standard bruge det aktive regneark i den aktive projektmappe.

Så for at henvise til en række A1:B10 på det aktive regneark i den aktive projektmappe kan du blot skrive:

Range("A1:B10")

Ændring af det aktive objekt

Hvis du under programafvikling skal gøre en anden projektmappe, et andet regneark, et område og så videre aktiv, så skal du bruge metoderne Aktiver eller Vælg sådan her:

Sub ActivateAndSelect() Workbooks("Book2").Activate Worksheets("Sheet2").Select Worksheets("Sheet2").Range("A1:B10").Select Worksheets("Sheet2").Range("A5") .Aktiver End Sub

Objektmetoder, herunder de netop anvendte metoder Aktiver eller Vælg, vil blive diskuteret mere detaljeret nedenfor.

Objektegenskaber

Hvert VBA-objekt har egenskaber tildelt det. For eksempel objekt Arbejdsbog har egenskaber Navn(Navn), Revisionsnummer(antal lagringer), Ark(ark) og mange andre. For at få adgang til et objekts egenskaber skal du skrive objektnavnet, derefter en prik og derefter egenskabsnavnet. For eksempel kan navnet på den aktive projektmappe tilgås på denne måde: ActiveWorkbook.Name. Altså at tildele til en variabel wbNavn navnet på den aktive projektmappe, kan du bruge denne kode:

Dim wbName As String wbName = ActiveWorkbook.Name

Tidligere viste vi, hvordan et objekt Arbejdsbog kan bruges til at få adgang til et objekt Arbejdsark ved at bruge denne kommando:

Arbejdsbøger("Bog1").Arbejdsark("Ark1")

Dette er muligt, fordi samlingen Arbejdsark er en egenskab ved en genstand Arbejdsbog.

Nogle objektegenskaber er skrivebeskyttede, hvilket betyder, at brugeren ikke kan ændre deres værdier. Samtidig er der egenskaber, som kan tildeles forskellige værdier. For eksempel at ændre navnet på det aktive ark til " Mit arbejdsark“, skal du blot tildele dette navn til ejendommen Navn aktivt ark, sådan her:

ActiveSheet.Name = "Mit regneark"

Objektmetoder

VBA-objekter har metoder til at udføre bestemte handlinger. Objektmetoder– disse er procedurer knyttet til genstande af en bestemt type. For eksempel objekt Arbejdsbog har metoder Aktiver, Tæt, Gemme og mange flere.

For at kalde en metode på et objekt skal du skrive objektets navn, en prik og navnet på metoden ned. For at gemme den aktive projektmappe kan du f.eks. bruge denne kodelinje:

ActiveWorkbook.Save

Ligesom andre procedurer kan metoder have argumenter, der sendes til metoden, når den kaldes. For eksempel metoden Tæt objekt Arbejdsbog har tre valgfrie argumenter, der bestemmer, om projektmappen skal gemmes inden lukning og lignende.

For at sende argumenter til en metode, skal du skrive værdierne af disse argumenter ned efter at have kaldt metoden, adskilt af kommaer. For eksempel, hvis du vil gemme den aktive projektmappe som en fil .csv med navnet "Book2", så skal du kalde metoden Gem som objekt Arbejdsbog og bestå argumentet Filnavn betyder Bog 2, og argumentet Filformat- betyder xlCSV:

ActiveWorkbook.SaveAs "Book2", xlCSV

For at gøre din kode mere læsbar, kan du bruge navngivne argumenter, når du kalder en metode. I dette tilfælde skal du først skrive argumentnavnet, derefter tildelingsoperatoren " := ” og derefter angive værdien. Så ovenstående metodekaldseksempel Gem som objekt Arbejdsbog kan skrives anderledes:

ActiveWorkbook.SaveAs Filnavn:="Book2", :=xlCSV

I vinduet Objektbrowser Visual Basic Editor viser en liste over alle tilgængelige objekter, deres egenskaber og metoder. For at åbne denne liste skal du starte Visual Basic Editor og klikke F2.

Lad os se på et par eksempler

Eksempel 1

Dette VBA-kodestykke kan tjene som en illustration af brugen af ​​en loop For hver. I dette tilfælde vil vi henvise til det for at demonstrere objektreferencer Arbejdsark(som som standard er taget fra den aktive projektmappe) og links til hvert objekt Arbejdsark separat. Bemærk, at den egenskab, der bruges til at vise navnet på hvert regneark, er Navn objekt Arbejdsark.

"Rul gennem alle regnearkene i den aktive projektmappe en efter en" og vis en beskedboks med navnet på hvert regneark Dim wSheet Som regneark for hvert wSheet i regneark MsgBox "Arbejdsark fundet: " & wSheet.Name Næste wSheet

Eksempel 2

Dette VBA-kodeeksempel viser, hvordan du kan få adgang til regneark og celleområder fra andre projektmapper. Derudover vil du sørge for, at hvis der ikke er angivet en reference til et bestemt objekt, så bruges de aktive Excel-objekter som standard. Dette eksempel demonstrerer brugen af ​​et nøgleord Sæt at tildele et objekt til en variabel.

I koden nedenfor, for objektet Rækkevidde metode kaldes PasteSpecial. Denne metode passerer argumentet sæt ind betyder xlPasteValues.

"Kopiér en række celler fra arket "Sheet1" i en anden projektmappe (navngivet Data.xlsx) "og indsæt kun værdierne i arket "Resultater" i den aktuelle projektmappe (kaldet CurrWb.xlsm) Dim dataWb As Workbook Set dataWb = Workbooks.Open( "C:\Data") "Bemærk, at DataWb er den aktive projektmappe. "Derfor, næste handling udført på Sheets-objektet i DataWb. Sheets("Sheet1").Range("A1:B10").Kopiér "Indsæt værdierne, der er kopieret fra celleområdet, i regnearket "Resultater" i den aktuelle projektmappe. Bemærk venligst, at CurrWb.xlsm-projektmappen ikke er "aktiv" og derfor skal refereres til. Workbooks("CurrWb").Sheets("Resultater").Range("A1").PasteSpecial Paste:=xlPasteValues

Eksempel 3

Følgende VBA-kodestykke viser et eksempel på et objekt (samling) Kolonner og demonstrerer, hvordan det tilgås fra et objekt Arbejdsark. Derudover vil du se, at når du refererer til en celle eller et celleområde i det aktive regneark, behøver du ikke at inkludere dette ark i referencen. Vi møder nøgleordet igen Sæt, ved hjælp af hvilken objektet Rækkevidde tildelt en variabel Col.

Denne VBA-kode viser også et eksempel på adgang til en ejendom Værdi objekt Rækkevidde og ændre dens betydning.

"Ved hjælp af en løkke ser vi gennem værdierne i kolonne A på arket "Sheet2", "udfør aritmetiske operationer med hver af dem og skriv resultatet "i kolonne A i det aktive regneark (Sheet1) Dim i As Integer Dim Col As Range Dim dVal As Double "Tildel variabel Col kolonne A i regnearket "Sheet2" Indstil Col = Sheets("Sheet2"). Kolonner("A") i = 1 "Se gennem alle cellerne i kolonne Col sekventielt indtil " indtil der stødes på en tom celle. Gør indtil IsEmpty(Col. Cells(i)) "Udfør aritmetiske operationer på værdien af ​​den aktuelle celle dVal = Col.Cells(i).Værdi * 3 - 1 "Følgende kommando skriver resultatet til kolonne A "på det aktive ark. Der er ingen grund til at angive arknavnet i referencen, "da Dette er det aktive ark i projektmappen. Celler(i, 1). Værdi = dVal i = i + 1 sløjfe

Excel objektmodel

Excel objekter

Programmer arbejder i Excel, skal frit navigere i sine objekters verden. Styrken ved kontorprogrammering bestemmes af det faktum, at programmøren i første omgang har et stort antal færdige objekter til sin rådighed. For at udnytte mulighederne godt, skal du kende genstandene.

Taler om genstande Excel Det er tilrådeligt at starte med at se på dokumentskelettet Excel. Jeg har skrevet meget om det vigtige begreb dokumentskelet i tidligere bøger. De talrige biblioteker af Office 2000-objekter, hvis samling repræsenterer Office 2000 for programmøren, danner rammerne for alle de dokumenter, der kan bygges i dette miljø. Når oprettet nyt dokument, For eksempel, Excel projektmappe, så er der som standard valgt flere fra hele sættet af biblioteker, hvis objekter danner rammen for dokumentet. Disse objekter er tilgængelige for programmøren uden nogen ekstra indsats. Central rolle i dokumentramme Excel spillet selvfølgelig af biblioteksgenstande Excel. Men viden og alle andre genstande inkluderet i rammen er nødvendige. For eksempel hvornår skabelse af software grænseflade er nødvendig viden Kontorbiblioteks delte objekter. Jeg vil også bemærke, at programmøren, hvis det ønskes, altid kan udvide dokumentrammen ved at tilføje visse biblioteker til den. Wireframen oprettes som standard, når en ny åbnes arbejdsbog, består af objekter inkluderet i følgende biblioteker:

· Excel- et bibliotek, der danner grundlag for Excel-dokumenter. Det er her klassen, der definerer rod Excel.Application-objektet, og alle objektklasser, der er indlejret i rodobjektet, gemmes.

· Kontor- et bibliotek af objekter, der er fælles for alle Office 2000-applikationer. Her er de klasser, der definerer værktøjslinjer - CommandBar og klasser af andre almindelige objekter. Klasserne, der definerer assistenten, er også placeret her (assistent-objektet og alle klasser tilknyttet det). Især var der nyt objekt, som ikke var i den tidligere version - Answer Wizard.

· Stdole- et klassebibliotek, der giver dig mulighed for at arbejde med OLE-objekter og implementere automatisering.

· VBA- bibliotek med klasser relateret til VBA-sproget. Alle standardfunktioner og konstanter indbygget i sprog-, Collection- og ErrObject-klasserne gemmes her.

· VBA-projekt- standardprojektet knyttet til dokumentet. Klasser, der kan oprettes af en programmør i dette projekt, metoder, egenskaber - alt dette er tilgængeligt for visning, ligesom objekter af klasser indbygget i standardbiblioteker.

Hvis vi sammenligner projektmapperammerne Excel, for eksempel med en dokumentramme Ord, så adskiller de sig ved, at man er baseret på et bibliotek Excel, den anden er baseret på et bibliotek Ord. Disse biblioteker indeholder applikationsspecifikke objekter. Hvad angår grænsefladeobjekter, objekter, der definerer editormiljøet VBA, automatisering, så bruges her almindelige objekter. Kontorbiblioteker, Stdole, VBA- Dette er biblioteker, der er fælles for alle Office 2000-applikationer. Jeg talte detaljeret om objekterne for disse biblioteker i .

Jeg bemærker, at selv om dokumentrammen Excel uændret i Office 2000 i forhold til tidligere version, samtidig er der sket ret betydelige ændringer i objektmodellen, nye objekter, nye egenskaber og metoder for tidligere eksisterende objekter er dukket op.

Excel objektmodel

Først og fremmest et par ord om, hvordan det fungerer Excel objektmodel og andre Office 2000-applikationer. I denne model er objekter relateret til hinanden af ​​relationen indlejring. På nulniveauet i hierarkiet er der nogle centrale et objekt, hvori andre objekter er indlejret, der udgør det første niveau af hierarkiet. Objekter på det næste niveau kan indbygges i hvert af objekterne på det første og efterfølgende niveau. Så denne proces fortsætter. Objekter i denne model er således "tykke", fordi de har et stort antal andre objekter indlejret i sig. Dette gælder især for genstande, der står på øverste niveauer hierarki.