Vba logiskt eller. VBA-operatörer och inbyggda funktioner. Felaktig överföring Korrekt överföring
Parameternamn | Menande |
Artikelns ämne: | VBA-operatörer |
Rubrik (tematisk kategori) | Programmering |
VBA är ett operatörsspråk. Detta betyder att dess program (procedurer eller funktioner) representerar sekvenser av satser.
På VBA-språket kan vi urskilja följande grupper operatörer:
1. deklarativa operatorer avsedda att beskriva objekt som programmet fungerar med (typer av variabler, konstanter och matriser, etc.),
2. kommentar uttalanden,
3. operatorer för att tilldela och ändra objektvärden,
4. Operatörer som kontrollerar beräkningarnas framsteg (villkorlig, cyklisk, övergång).
I denna kurs Grundläggande operatörer kommer att övervägas, och några, till exempel cykliska, kommer att presenteras i tre typer, men eleverna bör bara behärska en, som den mest förståeliga för användning.
Kommentarsoperatör
Kommentarer påverkar inte exekveringen av programmet, men är nödvändiga för att förstå algoritmen. Eftersom program uppdateras många gånger är det viktigt att använda kommentarer för att hjälpa dig komma ihåg algoritmen och ändra den på rätt sätt.
Varje rad med programtext kan avslutas med en kommentar. En kommentar i VBA börjar med en apostrof (") och inkluderar all text till höger om raden.
T.ex,
Vikt= vikt+z "Viktökning värde=vikt*pris "Nykostnad
Uppdragsoperatör
Tilldelningsoperatorer är det huvudsakliga sättet att ändra programtillstånd (variabelvärden). Det är en konstruktion som förbinder =-tecknet mellan en variabel (vänster sida) och ett uttryck (höger sida). Ett uttryck består av operander (namn på variabler, konstanter, namn på standardfunktioner) och symboler för operationer (aritmetiska, logiska, strängar, jämförelser). Meningen med denna operator är att den vänstra sidan tilldelas värdet på den högra sidan.
Kontrollutlåtanden
Uppsättningen av VBA-kontrollsatser motsvarar strukturerat språk programmering. I denna uppsättning ingår villkors- och loop-satser, vilket gör att du kan organisera beräkningsprocessen på ett tillförlitligt och effektivt sätt.
Villkorligt uttalande If Then Else End If
Detta är en vanlig beräkningskontrolloperatör i programmeringsspråk som låter dig välja och utföra åtgärder baserat på sanningen i ett visst tillstånd.
VBA-operatörer - koncept och typer. Klassificering och funktioner i kategorin "VBA-operatörer" 2017, 2018.
Denna kategori av Dial i TRIZ presenteras som "princip nr. 34, kassering och regenerering av delar: a) En del av ett föremål som har uppfyllt sitt syfte eller har blivit onödigt måste kasseras (upplösas, förångas, etc.) eller modifieras. direkt under arbetets gång. b)... .
Ris. 12.1 Placerade objekt på formuläret 6. Genom att aktivera varje objekt separat på formuläret ställer vi in dess egenskap med hjälp av egenskapsfönstret (Egenskaper Fig. 12.2). Därmed skapas gränssnittet (Fig. 12.3). Ris. 12.3. Projektgränssnitt (med... .
Sammansatt operatör. Strukturella operatörer Proceduranropsoperatör Ovillkorlig hoppoperatör Operatören för villkorslöst hopp ger möjlighet att ändra ordningsföljden för utförande... .
Ibland, när man löser problem, uppstår en situation då de operatörer som finns i filialerna i sin tur kan innehålla andra villkorade operatörer. Dessa kallas sammansatta operatorer. Dessutom kan antalet investeringar eller, som de också säger, investeringsnivåer vara... .
Visual Basic For Application (VBA) är en kombination av ett av de enklaste programmeringsspråken och alla beräkningsmöjligheter i Excel-kalkylarket. Med VBA kan du enkelt och snabbt skapa en mängd olika applikationer, även utan att vara expert på området...
Kort teoretisk information
1. Syntax och semantik för programmeringsspråket VBA
Syntaxen för ett programmeringsspråk är en uppsättning regler som beskriver kombinationer av alfabetiska tecken som anses vara ett korrekt strukturerat program (dokument) eller dess fragment.
De grundläggande syntaktiska principerna för detta språk är följande:
- VBA är skiftlägesokänslig;
- för att kommentera koden till slutet av raden, använd enda citat(") eller REM-kommando;
- teckenvärden måste omges av dubbla citattecken (");
- den maximala längden på ett namn i VBA (variabler, konstanter, procedurer) är 255 tecken;
- start av ett nytt uttalande - överför till ny linje(semikolon, som i C, Java, JavaScript, används inte för detta);
- begränsningar på maximal längd det finns ingen rad (även om i editorn bara 308 tecken ryms på en rad). Flera påståenden på samma rad separeras med kolon:
MsgBox "Check 1" : MsgBox "Check 2" - För att underlätta läsningen kan du kombinera flera fysiska rader till en logisk rad med ett mellanslag och ett understreck efter det:
MsgBox "Meddelande till användare" _
&vAnvändarnamn
Ett språks semantik är den semantiska betydelsen av ord. I programmering - den initiala semantiska betydelsen av operatorer, grundläggande språkkonstruktioner, etc.
Operatörär den minsta enheten av VBA-kod som kan exekveras. En sats kan deklarera eller definiera en variabel, ställa in ett VBA-kompilatoralternativ eller utföra någon åtgärd i ett program.
Aritmetisk Det finns bara 7 operatörer i VBA.
Fyra standard: addition (+), subtraktion (−), multiplikation (*), division (/) och tre till:
- exponentiering (^). Till exempel, 2^3 = 8;
- heltalsdivision (\). Delar det första talet med det andra, kasserar (utan att avrunda) bråkdelen. Till exempel, 5\2 = 2;
- modulo division (Mod). Dividerar det första talet med det andra, och returnerar endast resten av divisionen. Till exempel, 5 Mod 2 = 1.
Tilldelningsoperatören i VBA är likhetstecknet. Du kan skriva det så här:
Låt nVar = 10
eller ännu enklare:
nVar = 10
Blanda inte ihop likhetstecknet med likhetstecken här. Det sista uttrycket betyder "ställ in värdet på nVar till 10", och om raden ser ut så här: Om (nVar = 10) betyder det "om värdet på nVar är 10".
Jämförelseoperatörer i VBA finns det bara 8:
- jämlikhet (=). Till exempel, If (nVar = 10);
- större än (>) och mindre än (10);
- större än eller lika med (>=) och mindre än eller lika med (= 10);
- inte jämnlikt (). Till exempel, If(nVar10);
- jämförelse av objekt (Is). Bestämmer om objektvariabler refererar till samma objekt eller till olika. Till exempel, If (obj1 är obj2);
- likhet (Gilla). Jämför ett strängobjekt med ett mönster och avgör om mönstret matchar.
Jämförelseoperatörer återkommer alltid Sann(om påståendet är sant) eller Falsk(om påståendet är falskt).
Mycket ofta, när de kontrollerar flera villkor, använder de logiska operatorer:
- Och - logiskt OCH Båda villkoren måste vara sanna;
- Eller - logiskt ELLER. Minst ett av villkoren måste vara sant;
- Inte - logisk negation. Returnerar True om villkoret är falskt;
- Xor är ett logiskt undantag. I uttrycket E1 returnerar Xeller E2 True om endast E1 = True eller endast E2 = True, annars False;
- Eqv - ekvivalens av två uttryck, returnerar True om de har samma värde;
- Imp - implikation, E1 Imp E2 returnerar False om E1 = Sant och E2 = Falskt, annars Sant.
Du måste komma ihåg om Och, eller, inte, andra logiska operatorer används sällan.
Variabler– Det här är behållare för att lagra föränderlig data. Nästan inget program klarar sig utan dem. För enkelhetens skull kan en variabel jämföras med en siffra i en garderob - du ger en del data till garderoben, och som svar får du ett nummer. När du behöver dessa uppgifter igen "presenterar du numret" och tar emot det.
Varje variabel har ett namn. En variabel nås med namn. Reglerna för att välja namn i VBA är desamma för många element (variabler, konstanter, funktioner, procedurer, etc.):
- namnet måste börja med en bokstav;
- får inte innehålla mellanslag eller skiljetecken (undantag är understrecket);
- maximal längd - 255 tecken;
- måste vara unik i den nuvarande omfattningen
- reserverade ord (de som är markerade med blått i kodredigeringsfönstret) kan inte användas.
När du skapar VBA-program rekommenderas det att besluta om reglerna för vilka objekt kommer att namnges - en namnkonvention. Det vanligaste är det så kallade ungerska avtalet (till ära av en av Microsofts programmerare, Charles Simonyi, en ungersk medborgare):
- Variabelnamnet måste börja med ett prefix, skrivet med små bokstäver. Prefixet anger exakt vad som kommer att lagras i denna variabel:
str (eller s) - Sträng, teckenvärde;
fn (eller f) - funktion;
under - förfarande;
c (eller alla bokstäver i namnet är versaler) - konstant(en behållare för att lagra data som, till skillnad från variabler, inte ändras under körningen av ett VBA-program);
b - Booleskt, logiskt värde (Sant eller Falskt);
d - datum;
obj (eller o) - objektreferens;
n - numeriskt värde; - namn på funktioner, metoder och varje ord i ett sammansatt ord måste börja med en stor bokstav:
MsgBox objMyDocument.Name
Sub CheckDateSub()
Data typ anses vara de mest grundläggande begreppen i alla programmeringsspråk. En datatyp definierar uppsättningen giltiga värden som ett värde (variabel eller konstant) kan ta och uppsättningen av åtgärder som kan utföras på det värdet.
2. Grundläggande VBA-datatyper
VBA tillhandahåller följande datatyper:
- numerisk:
Byte- ett heltal från 0 till 255, behövs för förvaring 1 byte minne;
Heltal- ett heltal från -32 768 till 32 767, 2 byte ;
Lång- ett stort heltal från −2 147 483 648 till 2 147 483 647, 4 bytes ;
Valuta(monetär) - stor decimal nummer med 19 positioner, inklusive 4 decimaler
(från –922337203685477.5808 till 922337203685477.5807), 4 bytes,
används för att lagra siffror när noggrannhet är extremt viktig, vilket händer vid beräkning med monetära enheter;
Decimal- ett ännu större decimaltal med 29 positioner (efter decimaltecknet kan du använda från 0 till 28 positioner), 8 byte;
Enda Och Dubbel- flyttalsvärden ( 4 och 8 byte)
(från -3,402823·10 38 till -1,401298·10 -45 för negativa värden och
från 1,401298·10 -45 till 3,402823·10 38 för positiva värden för singel, och
från -1,79769313486232·10 308 till -4,94065645841247·10 -324 för negativa värden och
från 4,94065645841247·10 -324 till 1,79769313486232·10 308 för positiva värden för Double); - sträng( Sträng variabel längd (upp till cirka 2 miljarder tecken) och fast längd (upp till cirka 65 400 tecken));
- datum och tid ( Datum- från 01.01.100 till 31.12.9999), 8 byte;
- boolesk ( Boolean- kan bara lagra sanna och falska värden), 2 byte;
- objekt ( Objekt- lagrar en referens till ett objekt i minnet);
- Variant- en speciell datatyp som kan lagra alla typer av data, 16 byte +1
- matematiska, utförda på siffror, deras resultat är siffror;
- relationsoperationer kan tillämpas inte bara på tal, deras resultat är ett värde av den logiska typen;
- logisk, används i logiska uttryck och deras resultat är booleska värden.
3. Operationsprioriteringar
En prioritet | Drift |
1 2 3 4 5 6 7 8 9 10 11 12 |
Funktionsanrop och parenteser ^ - (byte av tecken) *, / \ Mod +, – >, <, >=, <=, <>, = Inte Och Eller Xor |
4. Matematiska funktioner
Fungera | Returvärde | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Magmuskler (<число>) | Modul (absolut värde) för ett tal | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Atn(<число>) | Arctangens | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
För(<число>) | Cosinus | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Exp (<число>) | Exponent, dvs resultatet av att höja basen för den naturliga logaritmen till den specificerade potensen | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Logga(<число>) | Naturlig logaritm | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rnd (<число>) | Slumptal från intervallet [, Titel]
Argument: Meddelande - ett obligatoriskt argument som anger informationsmeddelandet som ska visas i fönstret. Kan bestå av flera textrader sammanfogade av ett tecken & . Användning i detta argument Chr(13) leder till en ny rad vid utmatning av information. Knappar - värdet på detta argument avgör vilka kategorier av knappar som visas i fönstret. Värdet på knappargumentet avgör också om någon ikon visas i fönstret. Om du inte anger vilka knappar som ska visas i meddelanderutan används standardvärdet som motsvarar OK-knappen. I tabell 3.1 visar möjliga kombinationer av knappar och ikoner i meddelandefönstret. Rubrik - ställer in fönstrets titel. Fungera MsgBox returnerar ett heltalsvärde som anger vilken knapp som klickades på i dialogrutan. Tabell 3.1. Giltiga knappvariabelvärden
Till exempel. Visa ett meddelande om det aktuella datumet. MsgBox "Idag i kalendern" & Datum , "Obs" Som ett resultat kommer följande fönster att visas (Fig. 3.1). Efter att ha klickat på OK stängs meddelanderutan och programkörningen återupptas från satsen omedelbart efter MsgBox-anropet. 3.3.2. Fungera Inmatningslåda Fungera Inmatningslåda anger variabelvärden med hjälp av inmatningsfönstret och har följande syntax: Variable_Name = Inmatningslåda(Meddelande[, Titel] ) Argument: Meddelande - krävs argument. Ställer in ett informationsmeddelande i fönstret, som vanligtvis förklarar innebörden av det angivna värdet. Rubrik - ställer in fönstrets titel. Till exempel, Ange värdet på variabeln N från tangentbordet, vilket ger ett standardvärde på 10. För att göra detta kan du använda följande operator: N = InputBox("Ange N", "Input input",10) Som ett resultat kommer följande fönster att visas för inmatning av värdet på variabeln N (Fig. 3.2). Om standardvärdet är acceptabelt för användaren, stängs inmatningsfönstret efter att ha klickat på OK-knappen, variabeln N sätts till 10 och programkörningen återupptas från satsen omedelbart bakom anropet Inmatningslåda. Om standardvärdet inte är lämpligt för användaren måste du ange önskat värde för N-variabeln innan du klickar på OK-knappen. 3 .4. Villkorligt IF-uttalande För att implementera en förgrenad beräkningsprocess i VBA används operatören Om då annars, vilket är den enklaste formen av tillståndskontroll. Den har följande syntax: OmSKICKSedanOPERATÖR_1ElseOPERATÖR_2 OPERATÖR_1 avrättas om SKICK sant, annars utfört OPERATÖR_2. I det här fallet skrivs If...Then...Else-satsen på en rad. SKICKär ett booleskt uttryck. Resultatet av ett uttryck är alltid booleskt. Ett uttryck kan vara enkelt eller komplext. När du skriver enkla villkor kan alla möjliga relationsoperationer som anges i tabellen användas. 3.2. Tabell3 .2. Logiska relationer
Komplexa villkor bildas av enkla genom att använda logiska operationer och parenteser. Listan över logiska operationer ges i tabellen. 3.3. Tabell3 .3. Logiska operationer
I ett villkorligt uttalande är det tillåtet att använda ett block av satser istället för något av satserna. I det här fallet ser den villkorliga operatorn ut så här: OmSKICKSedan BLOCK_OPERATORS_1 BLOCK_OPERATORS_2 Sluta If Ett villkorligt uttalande kan testa flera villkor. I det här fallet ser den villkorliga operatorn ut så här: OmCONDITION_1Sedan BLOCK_OPERATORS_1 ElseIfCONDITION_2Sedan BLOCK_OPERATORS_2 Annan SlutetOm Exempel 1. Skriv en del av programmet för algoritmen i fig. 3.3. Exempel 2. Skriv en del av programmet för algoritmen i fig. 3.4. 3.5. Välj ärendeoperatör Operatorn Välj fall är användbar när du behöver utföra olika åtgärder beroende på värdet av ett uttryck som har en begränsad uppsättning giltiga värden. Det är också relaterat till villkorliga uttalanden, men har en annan form: Välj FallUTTRYCK UNDER TEST FallVALUES_1 OPERATÖRER_1 FallVÄRDEN_ 2 OPERATÖRER_ 2 . . . FallVALUES_N OPERATÖRER_N [ FallAnnan ANNAT_ OPERATÖRER] Avsluta Välj UTTRYCK UNDER TEST kan vara av vilken skalär typ som helst utom verklig. VÄRDEN består av ett godtyckligt antal värden eller intervall separerade med kommatecken. Typ VÄRDEN måste matcha typen TEST_EXPRESSION. Först beräknas det UTTRYCK UNDER TEST. Om dess värde matchar ett av värdena VALUES_I, då kommer de att uppfyllas OPERATÖRER_I Avsluta Välj. Om dess värde inte matchar något av värdena VALUES_I, då kommer de att uppfyllas ELSE_OPERATORS och kontrollen överförs till den operatör som står efter Avsluta Välj Till exempel. Skriv en del av programmet för algoritmen i fig. 3.5, som bestämmer värdet på variabeln S beroende på värdet på variabeln n. 3.6. Loop uttalanden För att implementera en cyklisk beräkningsprocess, d.v.s. upprepad exekvering av en eller flera operatorer, används loopoperatorn För nästa, som har följande syntax: FörCOUNTER=START_VALUEToCON_VALUEStegSTEG OPERATOR_BLOCK
OPERATOR_BLOCK NästaDISKEN For...Next loopar genom värdena för en variabel DISKEN, som är en loopparameter, från det initiala till det slutliga värdet med det angivna ändringssteget. Detta säkerställer att blocket med loopkroppssatser exekveras med varje nytt räknarvärde. Om StegSTEG saknas i designen, då antas det som standard att steget är lika med 1. Enligt operatören Avsluta för du kan avsluta loop-satsen innan DISKEN når det sista värdet.* För att iterera genom objekt från en grupp liknande objekt, till exempel celler från ett område eller arrayelement, är det bekvämt att använda loopoperatorn För…Varje ... Nästa. För varjeElementIGrupp BLOCKERA_ OPERATÖRER
OPERATOR_BLOCK NästaElement I VBA används andra loopoperatorer för att organisera loopar med ett okänt antal repetitioner: slingor med förutsättning - DoMedan … Slinga, DoFram tills … Slinga; slingor med postcondition - Do … SlingaMedan, Do … SlingaFram tills. Nedan är syntaxen för dessa loop-satser: "Slinga med förutsättningDo Medan … Slinga Göra medanSKICK OPERATOR_BLOCK
OPERATOR_BLOCK "Slinga med förutsättningDo Fram tills … Slinga DoFram tillsSKICK OPERATOR_BLOCK
OPERATOR_BLOCK "Slinga med postconditionDo … Loop While BLOCKERA_ OPERATÖRER
OPERATOR_BLOCK Loop WhileSKICK "Slinga med postconditionDo … Slinga tills BLOCKERA_ OPERATÖRER
OPERATOR_BLOCK Slinga tillsSKICK Operatör DoWhile...Loop säkerställer att ett block med uttalanden upprepas flera gånger tills SKICK observeras och operatören Andra nyheter Språkinstruktioner (eller operatorer)– dessa är programenheter som utför vissa åtgärder eller beskriver data. Uttalandet innehåller ett eller flera nyckelord och eventuellt parametrar. Flera påståenden som finns på samma programrad är separerade från varandra med ett kolon. Om satsen är för lång kan du dela upp den i flera rader genom att använda understrecket _ för att bryta den. HANDLA OM P erator uppgifter Tilldelningsoperatorn används för att tilldela ett nytt värde till en variabel under programexekveringen. Uppdragstecknet "=". Till exempel, operatör: x = Sqr(5 + Tan(1,8)^2) tilldelar variabel x värdet på expression . Som ett resultat av att beräkna uttrycket skrivet på höger sida får vi ett reellt tal. Men värdet som kommer att tilldelas variabel x beror på hur typen av variabeln deklarerades. Så om variabeln x är av typen Single, kommer den att tilldelas resultatet 4,834464, om den är Double, sedan 4,83446368725481, och om den är heltal, då 5. Datatypen för variabeln x måste vara kompatibel med datatypen för detta uttryck. Förutom implicit konvertering från en typ till en annan under uppdraget, ger Visual Basic möjligheten att konvertera typer med hjälp av funktioner. Till exempel funktionen CDbl konverterar data till dubbel typ, CInt– till heltalstypen, Clng– till den långa typen, CSng– till Single-typen, CStr– för att skriva String, etc. CInt- och Clng-funktionerna runt resultatet. Dessutom, om bråkdelen av ett tal är 0,5, görs avrundning till närmaste jämna tal. Uppdragsoperatör låter dig inte bara tilldela ett värde till en variabel, utan också att ställa in värdena för egenskaper hos VBA-objekt. Till exempel operatören Rows("1:1"). Teckensnitt. Fet = Sant Gör typsnittet på första raden i kalkylbladet fetstilt. LINJEBRYT Kombination<Пробел> + <Знак подчеркивания>i slutet av en rad säkerställer att nästa rad är en fortsättning på den föregående. Samtidigt måste vi komma ihåg att: § Du kan inte bryta strängkonstanter genom att linda § Högst sju fortsättningar av samma rad är tillåtna § Själva raden får inte innehålla mer än 1024 tecken Exempel. Felaktig överföring Korrekt överföring Line = "Visual Basic för _ Line = "Visual Basic" _ Applikationer" och "för applikationer" KOMMENTARER Texten efter symbolen (") i ett program upp till slutet av raden ignoreras av kompilatorn och är en kommentar. Kommentarer används för att lägga till förklaringar och beskrivningar till programmet. Kommentarer är användbara vid felsökning av ett program: de tillåter att tillfälligt inaktivera programrader under felsökning. Villkorlig operatör En villkorlig sats exekverar vissa instruktioner (påståenden) beroende på värdet av villkorsuttrycket. Blockdiagrammet för att kontrollera tillståndet ser ut så här: Ris. 1. Förgreningen kan vara ofullständig (denna struktur kallas även bypass). Ris. 2. Den villkorliga satsen har två former av syntax: linje och block. Små bokstäver Om skick Sedan [ operators_om_true] Algoritmen som presenteras i fig. 1, kommer i gemener att skrivas som Om skick Sedan operators_om_true Annan operators_if_false Figur 2 motsvarar posten Om skick Sedan operators_om_true Figur 3 motsvarar posten Om skick Sedan Else operators_if_false Blockform Om skick-1 Sedan [operators_if condition–1_true] [operators_if_all_conditions_false]] Villkoren som anges i If- och ElseIf-delarna är relationsuttryck eller logiska uttryck. När ett av villkoren är uppfyllt exekveras satserna som följer dess motsvarande Then nyckelord, och de återstående satserna ignoreras (det vill säga inga ytterligare tester utförs och kontrollen överförs till satsen efter End If). Om inget av de logiska förhållandena är sant, då operators_if_all_previous_conditions_false, eller, om denna del utelämnas, överförs kontrollen till programraden efter villkorssatsen. Blockformen för If-satsen är att föredra om: När ett villkor är uppfyllt eller inte uppfyllt exekveras flera satser (radformen i detta fall kan också användas, men raden blir för lång och programmet mindre tydligt); Flera villkor kontrolleras sekventiellt, och när nästa villkor är uppfyllt är det olämpligt att kontrollera efterföljande villkor (det är därför nyckelordet ElseIf används). Exempel Företaget ger rabatter till grossistköpare. Baserat på den kända beställningsvolymen är det nödvändigt att bestämma dess kostnad. För att beräkna orderkostnaden använder vi funktionen: Offentlig funktion Order_Cost(Quantity As Long) As Double Om Kvantitet<= 999 Then Order_cost = Kvantitet * 5 ElseIf Kvantitet<= 1999 Then Order_cost = Kvantitet * 4.8 Order_cost = Kvantitet * 4,75 I det här fallet var det möjligt att använda IF-operatorns gemener: Offentlig funktion Order_Cost1(Quantity As Long) As Double Om Kvantitet<= 999 Then Стоимость_заказа1 = Количество * 5 Om kvantitet >= 1000 och kvantitet<= 1999 Then Стоимость_ заказа1 = Количество * 4.8 Om Kvantitet >= 2000 Då Order_Cost1 = Kvantitet * 4,75 Om vi inte överväger nackdelarna med att raderna är långa, och för varje ordervolym utförs alla kontroller sekventiellt (det första förfarandet fungerar snabbare för små ordervolymer), så är programmet korrekt skrivet och kanske ännu tydligare. Det är dock möjligt att ge exempel där, om ett av villkoren är uppfyllt (eller inte uppfyllt), de andra helt enkelt inte kan kontrolleras. Till exempel, vissa operatörer måste köras när villkoren uppfylls gemensamt: http://po-teme.com.ua/images/adIIIin/image014_e652e49476c6f0eb9cf40b68cc090828.gif" alt="" width="56" height="27 src="> Om för kontroller använd operator Om x>0 och y sedan om x är negativt kommer ett fel att uppstå när sqr-funktionen anropas (roten är ett negativt tal). Detta fel kan undvikas genom att använda designen Om x > 0 Då Om y< Sqr(x) Then I den sista formen av posten, om det finns ett Else-nyckelord, hänvisar det till den sista If-satsen. Urvalsoperatör Välj Fall uttryck [instruktioner_annan]] Expressionsparametern är valfritt numeriskt eller stränguttryck. Istället för att utvärdera ett logiskt villkor jämförs uttryckets värde med vart och ett av värdena som specificeras av parametern uttryckslista-n. Värden för jämförelse ingår i expression_list-n, kan anges i formuläret: – värden; – värdeintervall i formuläret ursprungligt värde Till slutligt_värde; – jämförelseuttryck i formen Is comparison_operator värde; – en lista över någon av de listade uttryckstyperna (separator – komma). En instruktion kan innehålla ett godtyckligt antal Case-block. Om inget av villkoren är sant, exekveras satserna i Case Else-blocket. Till exempel, om villkoret är en poäng över tre, kan detta villkor skrivas: Fall 4, 5 eller Fall är >3 eller Fall är >= 4 eller Fall 4 till 5. Notera. Nyckelord Behöver inte anges, den läggs till automatiskt. Exempel Ovanstående exempel med ett rabatterat pris med Select Case-konstruktionen kan lösas enligt följande: Offentlig funktion Order_Cost2(Quantity As Long) As Double Välj ärendekvantitet Order_cost2 = Kvantitet * 5 Fall 1000 till 1999 Order_cost2 = Kvantitet * 4,8 Fall är >= 2000 Order_cost2 = Kvantitet * 4,75 Ett VBA-program är en sekvens av uttalanden. Det finns ett antal konventioner som bör följas när man skriver program. Således kan flera påståenden placeras på en rad. Ett kolon placeras mellan påståenden på samma rad. Vilken rad som helst kan delas i två genom att placera tecknen "Mellanslag" + "Understreck" (_) i slutet av den första, i vilket fall den andra raden kommer att betraktas som en fortsättning på den första. Kommentarer används för att göra programmet lättläst. Det finns två sätt att skriva in kommentarer i VBA: att använda en apostrof ('), som kan placeras var som helst på en rad, och att använda det reserverade ordet Rem istället för en apostrof. 1. Dim operatörär avsedd för att deklarera variabeltyper. 1. Dim A som heltal – variabel A deklareras som ett heltal, dvs. den lagrar endast heltalsvärden
. 2.
Dim D som datum – variabel D deklareras för att lagra datum.
3.
Dim efternamn, namn som sträng – variabler deklareras. Efternamn och namn, avsedda för lagring av text.
4.
Dim B(12) Som heltal – en endimensionell array (vektor) som består av 12 heltal deklareras, och som standard kommer det första elementet i arrayen att vara B(0), och det sista B(12).
5.
Dim B(3,3) Som singel – en tvådimensionell 3x3-matris (matris) som består av reella tal deklareras.
Om en variabeltyp inte anges är standardtypen Variant. Men att specificera en specifik typ av variabel gör programmet mer tillförlitligt och påskyndar dess drift, eftersom VBA behöver inte slösa tid på att känna igen en odeklarerad variabel varje gång den används. Om storleken på arrayen M inte är känd i förväg och bestäms under programmet, indikeras inte antalet element när arrayen beskrivs, och arrayen definieras enligt följande: Dim M() Som heltal Efter att ha bestämt antalet arrayelement, till exempel N, måste du skriva operatorn 2. Uppdragsoperatörär avsett att tilldela ett värde till en variabel. Syntax: Variabel (eller objektegenskap) = uttryck. 1. a=5 – tilldela variabel A värdet 5
; 2. b=”Manager” – variabel b tilldela betyder "chef"; · Address=Sheets("Organisationer").Cells(2,2) – tilldela adressvariabeln innehållet i cell B2, som finns på bladet Organisationer i den aktuella arbetsboken;
Efternamn=UserForm1.TextBox1.Text – variabel Efternamn tilldelas innehållet i TextBox1-fältet i användarformuläret UserForm1.
o Med/Avsluta med uttalande sparar programmeraren från ett stort antal upprepningar av namnet på samma objekt. Syntax: Med föremål operatör1 operatör2 operatörN Till exempel istället för en sekvens av påståenden UserForm1.TextBox1.Text = Datum UserForm1.TextBox2.Text = " " UserForm1.ComboBox1.Text = " " kan skrivas så här TextBox1.Text = Datum .
TextBox2.Text = " " .
ComboBox1.Text = " " REM På blad Blad1 i kolumn A, med början på andra raden, skrivs ’anställda tariffer’ ner. Fyll i kombinationsrutan ComboBox1 i användarformuläret UserForm1 'Den första raden i programmet - på arket Blad1 i kolumn A 'antalet fyllda celler räknas, resultatet' tilldelas variabeln N N=Application.CountA(Sheets(“Sheet1”).Range(“A:A”)). D=”A2:A”&Cint(N) Sheets(”Sheet1”).Range(D).Name=”Tariffer” TextBox1.Text = Datum .
TextBox2.Text = " " .
ComboBox1.Text = " " .
ComboBox1.Rowsource = "Tariffer" 1. Villkorligt uttalande If/Then/Else– låter dig kontrollera ett visst tillstånd och, beroende på resultatet av kontrollen, utföra en eller annan åtgärd Syntax: Om skick Sedan operatörer1 [ Annan operatörer2] Om villkoret är sant, exekveras satser1, annars exekveras satser2. Det är också möjligt att använda en komplex villkorlig operator, som är skriven som ett block: Om skick1 Sedan operatörer1 ElseIf skick2 Sedan operatörer2 operatörer3 Efternamn=.TextBox1.Text Om Efternamn =”“ Då MsgBox”Du har inte angett något efternamn” REM När kryssruta nummer 1 är markerad ges kunden 5 % rabatt ' Belopp – summa pengar som betalas av klienten ' Kostnaden för produkten lagras i kostnadsvariabeln Om UserForm1.CheckBox1.Value = True Då Belopp=Kostnad-Kostnad*0,05 Annat belopp=kostnad 1) REM Antag att Tariff är den fastställda tariffen och Time är den arbetade tiden. Tid och taxa skrivs in i inmatningsfälten 'i TextBox1 respektive TextBox2. Lönen beräknas med formeln Tariff*Tid. Låt oss skriva ett program för att visa den beräknade lönen i formuläret. Label4 – inskription förberedd för att "visa lönevärdet" If IsNumeric(TextBox1.Text)=True And _ IsNumeric(TextBox2.Text)=Sant Då Tariff=TextBox1.Text Time=TextBox2.Text Label4.Caption=Taxa*Tid I det första exemplet arbetar vi med användarform nummer ett. Variabel Efternamn innehållet i inmatningsfält nummer ett tilldelas. Den kontrollerar sedan om något har skrivits in i inmatningsfältet (om variabeln är tom Efternamn). Om variabeln Efternamnär tom, visas en meddelanderuta på skärmen. I det andra exemplet är de första raderna som börjar med ordet REM och apostrof kommentarer som förklarar syftet med variablerna. Den villkorade operatören bestämmer det belopp som betalas av klienten. Det tredje exemplet kontrollerar om siffror anges i inmatningsfälten. Om siffror skrivs in i två fält, tilldelas variablerna värdena för inmatningsfälten och etiketten tilldelas värdet av resultatet av multiplicering av tariffen med tid. 1) Ovillkorlig hoppoperatör Gå tillär avsedd för att specificera en övergång till en specificerad rad i ett program. Syntax: Gå till sträng Obligatoriskt argument Sträng kan vara valfri radetikett eller radnummer. If IsNumeric(TextBox1.Text)=False Then GoTo Error Fel: MsgBox "Fel vid inmatning av siffror!" Exemplet ovan kontrollerar om ett nummer har skrivits in i inmatningsfält ett. Om det angivna numret inte är ett nummer, flyttas raden med feletiketten och ett meddelande visas på skärmen. 2) Slingoperatör För/Till/Nästa designad för programmering av repeterande fragment, dvs. för att beskriva cykliska algoritmer. Syntax: För variabel=M1 Till M2 [ Steg M3] operatörer M1, M2, M3 – uttryck. En loop-sats upprepar exekveringen av en grupp av satser medan variabeln (räknaren) ändras från initialvärdet M1 till slutvärdet M2 med det specificerade steget M3. Om steget inte anges antas det vara 1. Efternamn = Sheets(“Anställda”).Cells(I,1) UserForm1.ComboBox1.AddItem Efternamn I det angivna exemplet antas det att på bladet "Anställda" innehåller den första kolumnen namnen på anställda som behöver inkluderas i listan med kombinationsruta nummer ett i användarformulär nummer ett. Programoperationsalgoritm: 1) Variabel I tilldelas värdet 2. 2) Variabeln Efternamn tilldelas värdet av cell A(I,1), som finns på arket "Anställda". (När loopen exekveras för första gången är detta cell A(2,1)) 3) Ett element från variabeln Efternamn läggs till i listan över kombinationsrutan ComboBox1. 4) 1 läggs till värdet på variabeln I (om steget inte anges antas det vara lika med 1). En kontroll görs för att se om värdet på I har överskridit 10 (slutvärdet på variabeln I, i exemplet M3=10)? Om värdet på I är ännu mindre än eller lika med 10, utförs steg 2-4, annars avslutas cykeln. Således låter programmet ovan dig fylla listan över ComboBox1 med data. Grundläggande algoritmer som används för att lösa Låt oss titta på de grundläggande algoritmerna med följande exempel. Anställda från olika avdelningar deltog i utförandet av arbetet enligt kontraktet. Tabellen på blad “Sheet1” visar uppgifter om antalet arbetade timmar av varje anställd (fig. 8). Fig. 8. Uppgifter om antalet arbetade timmar företagets anställda |