VBA-ohjelma on lausekkeiden sarja.

On olemassa useita käytäntöjä, joita tulee noudattaa ohjelmia kirjoitettaessa. Näin ollen yhdelle riville voidaan sijoittaa useita lauseita. Saman rivin lauseiden väliin sijoitetaan kaksoispiste.

Mikä tahansa rivi voidaan jakaa kahteen asettamalla merkit "välilyönti" + "alaviiva" (_) ensimmäisen loppuun, jolloin toista riviä pidetään jatkona ensimmäiselle.

Kommentteja käytetään helpottamaan ohjelman lukemista. VBA:ssa on kaksi tapaa kirjoittaa kommentteja: heittomerkki ('), joka voidaan sijoittaa mihin tahansa riville, ja varattu sana Rem heittomerkin sijaan.

1. Hämärä operaattori on tarkoitettu muuttujatyyppien ilmoittamiseen.

Himmeä A kokonaislukuna – muuttuja A ilmoitetaan kokonaislukuna, ts. se tallentaa vain kokonaislukuja .

Himmeä D päivämääränä – muuttuja D on ilmoitettu tallentamaan päivämäärät.

· Himmeä sukunimi, nimi merkkijonona – muuttujat ilmoitetaan. Sukunimi ja Nimi, tarkoitettu tekstin tallentamiseen.

· Dim B(12) Kokonaislukuna – ilmoitetaan yksiulotteinen taulukko (vektori), joka koostuu 12 kokonaisluvusta, ja oletuksena taulukon ensimmäinen elementti on B(0) ja viimeinen B(12).

Dim B(3,3) Single – ilmoitetaan kaksiulotteinen 3x3-taulukko (matriisi), joka koostuu reaaliluvuista.

Jos muuttujan tyyppiä ei ole määritetty, oletustyyppi on Variantti. Tietyntyyppisen muuttujan määrittäminen kuitenkin tekee ohjelmasta luotettavamman ja nopeuttaa sen toimintaa, koska VBA:n ei tarvitse tuhlata aikaa ilmoittamattoman muuttujan tunnistamiseen joka kerta, kun sitä käytetään.

Jos taulukon M kokoa ei tiedetä etukäteen ja se määritetään ohjelman aikana, niin taulukkoa kuvattaessa ei ilmoiteta elementtien lukumäärää, vaan taulukko määritellään seuraavasti:

Dim M() Kokonaislukuna

Kun olet määrittänyt taulukon elementtien määrän, esimerkiksi N, sinun on kirjoitettava operaattori

2. Tehtäväoperaattori on tarkoitettu antamaan arvo muuttujalle.

Syntaksi:

Muuttuja (tai objektin ominaisuus) = lauseke.

a=5 – anna muuttujalle A arvo 5 ;

· b="johtaja" - muuttuja b antaa tarkoittaa "johtaja";

· Osoite=Sheets("Organisaatiot"). Solut(2,2) – määritä Osoite-muuttuja solun B2 sisältö, joka sijaitsee nykyisen työkirjan Organisaatiot-välilehdessä;

Sukunimi=UserForm1.TextBox1.Text – muuttuja Sukunimi annetaan käyttäjälomakkeen UserForm1 TextBox1-kentän sisällölle.

3. Kanssa/Lopeta lauseeseen säästää ohjelmoijan suurelta määrältä saman objektin nimen toistoja.

Syntaksi:

Objektin kanssa

operaattori1

operaattori 2



operaattoriN

Esimerkiksi lausesarjan sijaan

UserForm1.TextBox1.Text = Päivämäärä

UserForm1.TextBox2.Text = " "

UserForm1.ComboBox1.Text = " "

voi kirjoittaa näin

TextBox1.Text = Päivämäärä

. TextBox2.Text = " "

. ComboBox1.Text = " "

REM Arkille Sheet1 sarakkeessa A toisesta rivistä alkaen kirjoitetaan "työntekijätariffit". Täytä yhdistelmäruutu ComboBox1 käyttäjälomakkeessa UserForm1

'Ohjelman ensimmäinen rivi – arkin Sheet1 sarakkeessa A 'täytettyjen solujen määrä lasketaan, tulos 'ostetaan muuttujalle N

N=Application.CountA(Sheets("Sheet1").Alue("A:A").

D=”A2:A”&Cint(N)

Sheets("Sheet1").Alue(D).Nimi="Tariffit"

TextBox1.Text = Päivämäärä

. TextBox2.Text = " "

. ComboBox1.Text = " "

. ComboBox1.Rowsource = "tariffit"

4. Ehdollinen lause Jos/Sitten/Muuten– voit tarkistaa tietyn tilan ja tarkastuksen tuloksista riippuen suorittaa yhden tai toisen toiminnon

Syntaksi:

Jos kunto Sitten operaattorit1 [ Muu operaattorit2]

Jos ehto on tosi, lauseet1 suoritetaan, muuten lausekkeet2 suoritetaan.

On myös mahdollista käyttää kompleksista ehdollista operaattoria, joka kirjoitetaan lohkona:

Jos kunto1 Sitten

operaattorit1

Muuten jos kunto 2 Sitten

merkkiNimiKuvaus
= YhtäPalauttaa True, jos vasen ja oikea operandi ovat yhtä suuret. Huomaa, että tämä on tehtäväoperaattorin ylikuormitus.
<> Ei tasa-arvoistaPalauttaa True, jos vasen ja oikea operandi eivät ole samat.
> Parempi kuinPalauttaa True, jos vasen operandi on suurempi kuin oikea operandi.
< Vähemmän kuinPalauttaa True, jos vasen operandi on pienempi kuin oikea operandi.
>= Enemmän tai yhtä paljonPalauttaa True-arvon, jos vasen operandi on suurempi tai yhtä suuri kuin oikea operandi.
<= Vähemmän tai yhtä suuretPalauttaa True-arvon, jos vasen operandi on pienempi tai yhtä suuri kuin oikea operandi.
On ViitepääomaPalauttaa True, jos vasen objektiviittaus on sama esiintymä kuin oikeanpuoleinen objektiviittaus. Sitä voidaan käyttää myös molemmilla puolilla Nothing (nolla objektiviittaus) kanssa. Huomautus. Is-operaattori yrittää pakottaa molemmat operandit objektiin ennen vertailun suorittamista. Jos jompikumpi puoli on primitiivinen tyyppi tai Variantti, joka ei sisällä objektia (joko ei-objekti-alatyyppiä tai vtEmpty-vertailua), johtaa ajonaikaiseen virheeseen 424 - "Objekti vaaditaan". Jos jokin operandi kuuluu toiselle käyttöliittymä sama objekti, vertailu palauttaa True . Jos sinun on tarkistettava molempien ilmentymien rehellisyys, niin Ja käyttöliittymä, ObjPtr(vasen) = ObjPtr(oikea) käytä ObjPtr(vasen) = ObjPtr(oikea) .

Huomautuksia

VBA-syntaksi mahdollistaa vertailuoperaattoreiden "ketjutuksen", mutta yleensä näitä rakenteita tulisi välttää. Vertailu tehdään aina vasemmalta oikealle vain kahdella operandilla kerrallaan, ja jokainen vertailu johtaa Boolen. Esimerkiksi ilmaisu...

A = 2: b = 1: c = 0 expr = a > b > c

Voidaan lukea joissakin yhteyksissä testaamaan, onko b a:n ja c:n välissä. VBA:ssa tämä arvioidaan seuraavasti:

A = 2: b = 1: c = 0 lau = a > b > c lau = (2 > 1) > 0 lau = tosi > 0 lau = -1 > 0 "CInt(tosi) = -1 lause = epätosi

Mikä tahansa vertailuoperaattori, jota käytetään Objectin kanssa operandina, suorittaa Objectin oletusjäsenen palautusarvon. Jos objektilla ei ole oletusjäsentä, vertailu johtaa ajonaikaiseen virheeseen 438 - "Objekti ei tue sen ominaisuutta tai menetelmää."

Jos objektia ei alusteta, vertailu johtaa ajonaikaiseen virheeseen 91 - "Objektimuuttuja tai lohkomuuttuja lukittu."

Jos Nothing literaalia käytetään minkä tahansa muun vertailuoperaattorin kuin Is:n kanssa, tuloksena on käännösvirhe - "objektin laiton käyttö".

Jos Objektin oletusobjekti on toinen Objekti, VBA kutsuu jatkuvasti jokaisen seuraavan palautusarvon oletuselementtiä, kunnes primitiivinen tyyppi palautetaan tai virhe ilmenee. Oletetaan esimerkiksi, että SomeClassilla on oletusjäsenarvo , joka on ChildClass-instanssi ja ChildValue-jäsenen ChildValue. Vertailu...

Aseta x = Uusi SomeClass Debug.Print x > 42

Arvioidaan seuraavasti:

Aseta x = Uusi SomeClass Debug.Print x.Value.ChildValue > 42

Jos jompikumpi operandi on numeerinen ja toinen operandi on merkkijono tai merkkijono-alatyypin muunnelma, suoritetaan numeerinen vertailu. Tässä tapauksessa, jos merkkijonoa ei voida yhdistää numeroon, vertailun tuloksena on ajonaikainen virhe 13 - "Tyyppivirhe".

Jos molemmat Operandit ovat String-alatyypin merkkijono tai muunnelma, merkkijonojen vertailu suoritetaan koodimoduulin parametrien vertailuparametrin perusteella. Nämä vertailut tehdään hahmokohtaisesti. ota huomioon, että symbolinen esitys Numeron sisältävä merkkijono Ei on sama kuin vastaavat numeeriset arvot:

Julkinen aliesimerkki() Himmennä vasen Varianttina Himmeä oikealle Vaihtoehtona vasen = "42" right = "5" Debug.Print left > right "Tulosta vääriä Debug.Print Val(left) > Val(right) "Tulostaa oikean lopun alaosan

Tästä syystä varmista, että merkkijono- tai muunnelmamuuttujat välitetään numeroille ennen numeeristen epäyhtälöiden vertailua.

Jos toinen operandi on päivämäärä, taustalla olevalle kaksoiskappaleelle suoritetaan numeerinen vertailu, jos toinen operandi on numeerinen tai se voidaan muuntaa numeeriseksi.

Jos toinen operandi on merkkijono tai merkkijonon alatyypin muunnelma, joka voidaan suoratoistaa päivämäärään nykyistä aluetta käyttämällä, merkkijono lähetetään päivämäärään. Jos sitä ei voida soveltaa päivämäärään nykyisessä maassa, vertailun tuloksena on ajonaikainen virhe 13 - "Tyyppivirhe".

On oltava varovainen vertailtaessa kaksinkertaisia ​​tai yksittäisiä arvoja ja loogisia arvoja. Toisin kuin muut numeeriset tyypit, nollasta poikkeavia arvoja ei voida pitää tosina, koska VBA pyrkii edistämään vertailutietotyyppiä käyttämällä liukulukua Double:

Julkinen aliesimerkki() Himmennystesti kaksoistestinä = 42 Debug.Print CBool(Test) "Tulostaa oikein." True ylennetään Double - Testiä ei lähetetä Boolen Debug.Print Test = True "Tulostaa epätosi"Epäselvillä heitoilla: Debug.Print CBool(Test) = True "Tulostaa True Debug.Print CDbl(-1) = CDbl(True) "Tulostaa True End Sub

Lyhyt teoreettinen tieto

1. VBA-ohjelmointikielen syntaksi ja semantiikka

Ohjelmointikielen syntaksi on joukko sääntöjä, jotka kuvaavat aakkosmerkkien yhdistelmiä, joita pidetään oikein jäsenneltynä ohjelmana (asiakirjana) tai sen fragmenttina.

Tämän kielen syntaktiset perusperiaatteet ovat seuraavat:

  • VBA ei välitä kirjainkoosta;
  • Kommentoi koodi rivin loppuun käyttämällä lainausmerkkiä (") tai REM-komentoa;
  • merkkiarvot on suljettava lainausmerkeissä (");
  • minkä tahansa nimen enimmäispituus VBA:ssa (muuttujat, vakiot, menettelyt) on 255 merkkiä;
  • uuden lauseen alku - siirto uudelle riville (puolipistettä, kuten C:ssä, Javassa, JavaScriptissä, ei käytetä tähän);
  • Rivin enimmäispituudelle ei ole rajoituksia (vaikka editorissa riville mahtuu vain 308 merkkiä). Useat lauseet samalla rivillä erotetaan kaksoispisteillä:
    MsgBox "Check 1" : MsgBox "Check 2"
  • Lukemisen helpottamiseksi voit yhdistää useita fyysisiä rivejä yhdeksi loogiseksi käyttämällä välilyöntiä ja alaviivaa sen jälkeen:
    MsgBox "Viesti käyttäjälle" _
    &vKäyttäjänimi

Kielen semantiikka on sanojen semanttinen merkitys. Ohjelmoinnissa - operaattoreiden alkuperäinen semanttinen merkitys, peruskielirakenteet jne.

Operaattori on pienin VBA-koodin yksikkö, joka voidaan suorittaa. Käsky voi ilmoittaa tai määrittää muuttujan, asettaa VBA-kääntäjän valinnan tai suorittaa jonkin toiminnon ohjelmassa.

Aritmeettinen VBA:ssa on vain 7 operaattoria.

Neljä standardia: yhteenlasku (+), vähennyslasku (−), kertolasku (*), jako (/) ja kolme muuta:

  • eksponentio (^). Esimerkiksi 2^3 = 8;
  • kokonaislukujako (\). Jakaa ensimmäisen luvun toisella ja hylkää (ilman pyöristystä) murto-osan. Esimerkiksi 5\2 = 2;
  • modulo-jako (Mod). Jakaa ensimmäisen luvun toisella ja palauttaa vain jaon loppuosan. Esimerkiksi 5 Mod 2 = 1.

Tehtäväoperaattori VBA:ssa on yhtäläisyysmerkki. Voit kirjoittaa sen näin:

Olkoon nVar = 10
tai vielä yksinkertaisempaa:
nVar = 10

Älä sekoita yhtäläisyysmerkkiä yhtäläisyys-operaattoriin. Viimeinen lauseke tarkoittaa "aseta nVar:n arvoksi 10", ja jos rivi näyttää tältä: Jos (nVar = 10) , se tarkoittaa "jos nVar:n arvo on 10".

Vertailuoperaattorit VBA:ssa on vain 8:

  • tasa-arvo (=). Esimerkiksi If (nVar = 10);
  • suurempi kuin (>) ja pienempi kuin (10);
  • suurempi tai yhtä suuri kuin (>=) ja pienempi tai yhtä suuri kuin (= 10);
  • ei ole sama (). Esimerkiksi If(nVar10);
  • esineiden vertailu (Is). Määrittää, viittaavatko objektimuuttujat samaan vai eri objektiin. Esimerkiksi If (obj1 on obj2);
  • samankaltaisuus (Tykkää). Vertaa merkkijonoobjektia kuvioon ja määrittää, sopiiko kuvio yhteen.

Vertailuoperaattorit palaavat aina Totta(jos väite on totta) tai Väärä(jos väite on väärä).

Hyvin usein he käyttävät useita ehtoja tarkistaessaan loogisia operaattoreita:

  • Ja - looginen JA. Molempien ehtojen on oltava tosi;
  • Tai - looginen TAI. Vähintään yhden ehdoista on oltava tosi;
  • Ei - looginen kieltäminen. Palauttaa True, jos ehto on epätosi;
  • Xor on looginen poikkeus. Lausekkeessa E1 Xtai E2 palauttaa tosi, jos vain E1 = tosi tai vain E2 = tosi, muuten epätosi;
  • Eqv - kahden lausekkeen ekvivalenssi, palauttaa True, jos niillä on sama arvo;
  • Imp - implikaatio, E1 Imp E2 palauttaa False, jos E1 = tosi ja E2 = epätosi, muuten tosi.

Sinun täytyy muistaa noin Ja, Tai, Ei, muita loogisia operaattoreita käytetään harvoin.

Muuttujat- Nämä ovat säilytysastioita muutettavan tiedon tallentamiseen. Melkein mikään ohjelma ei tule toimeen ilman niitä. Yksinkertaisuuden vuoksi muuttujaa voidaan verrata vaatekaapin numeroon - annat tietoja vaatekaappiin ja vastauksena sinulle annetaan numero. Kun tarvitset näitä tietoja uudelleen, "esität numeron" ja vastaanotat sen.

Jokaisella muuttujalla on nimi. Muuttujaa käytetään nimellä. VBA:n nimien valintasäännöt ovat samat monille elementeille (muuttujat, vakiot, funktiot, menettelyt jne.):

  • nimen tulee alkaa kirjaimella;
  • ei saa sisältää välilyöntejä tai välimerkkejä (poikkeus on alaviiva);
  • enimmäispituus - 255 merkkiä;
  • on oltava ainutlaatuinen nykyisessä laajuudessa
  • varattuja sanoja (ne, jotka on korostettu sinisellä koodinmuokkausikkunassa) ei voi käyttää.

VBA-ohjelmia luotaessa on suositeltavaa päättää säännöistä, joiden mukaan objektit nimetään - nimeämiskäytäntö. Yleisimmin käytetty on ns. unkarilainen sopimus (yhden Microsoftin ohjelmoijan, kansallisuudeltaan unkarilaisen Charles Simonyin kunniaksi):

  • Muuttujan nimen tulee alkaa etuliitteellä, joka kirjoitetaan pienillä kirjaimilla. Etuliite osoittaa, mitä tähän muuttujaan tarkalleen tallennetaan:
    str (tai s) - merkkijono, merkin arvo;
    fn (tai f) - funktio;
    osamenettely;
    c (tai kaikki nimen kirjaimet ovat isoja) - vakio(säilö datan tallentamiseen, joka, toisin kuin muuttujat, ei muutu VBA-ohjelman suorituksen aikana);
    b - Boolen arvo, looginen arvo (tosi tai epätosi);
    d - päivämäärä;
    obj (tai o) - objektiviittaus;
    n - numeerinen arvo;
  • funktioiden nimien, menetelmien ja jokaisen yhdyssanan sanan tulee alkaa isolla kirjaimella:
    MsgBox objMyDocument.Name
    Sub CheckDateSub()

Tietotyyppi niitä pidetään minkä tahansa ohjelmointikielen peruskäsitteinä. Tietotyyppi määrittää kelvollisten arvojen joukon, jonka arvo (muuttuja tai vakio) voi tehdä, ja joukon toimintoja, jotka voidaan suorittaa tälle arvolle.

2. VBA-perustietotyypit

VBA tarjoaa seuraavat tietotyypit:

  • numeerinen:
    Tavu- kokonaisluku väliltä 0-255, tarvitaan varastointiin 1 tavu muisti;
    Kokonaisluku- kokonaisluku välillä -32 768 - 32 767, 2 tavua ;
    Pitkä- suuri kokonaisluku välillä -2 147 483 648 - 2 147 483 647, 4 tavua ;
    Valuutta(rahallinen) - suuri desimaaliluku, jossa on 19 paikkaa, mukaan lukien 4 desimaalin tarkkuutta
    (alkaen –922337203685477.5808 - 922337203685477.5807), 4 tavua,
    käytetään numeroiden tallentamiseen, kun tarkkuus on erittäin tärkeää, mikä tapahtuu laskettaessa rahayksiköillä;
    Desimaali- vielä suurempi desimaaliluku, jossa on 29 paikkaa (desimaalipilkun jälkeen voit käyttää 0-28 paikkaa), 8 tavua;
    Yksittäinen Ja Kaksinkertainen- liukulukuarvot ( 4 ja 8 tavua)
    (-3,402823·10 38–-1,401298·10-45 negatiivisille arvoille ja
    1,401298·10 -45 - 3,402823·10 38 yksittäisten positiivisten arvojen ja
    -1,79769313486232·10 308 arvoon -4,94065645841247·10 -324 negatiivisille arvoille ja
    4,94065645841247·10 -324 arvoon 1,79769313486232·10 308 Double-positiivisille arvoille);
  • string( merkkijono vaihteleva pituus (enintään noin 2 miljardia merkkiä) ja kiinteä pituus (enintään noin 65 400 merkkiä));
  • päivämäärä ja aika ( Päivämäärä- 01.01.100 - 31.12.9999), 8 tavua;
  • boolen ( Boolean- voi tallentaa vain todellisia ja vääriä arvoja), 2 tavua;
  • esine ( Esine- tallentaa viittauksen mihin tahansa objektiin muistiin);
  • Variantti- erityinen tietotyyppi, joka voi tallentaa kaikentyyppisiä tietoja, 16 tavua +1
Tietotyyppimerkinnät ovat kielten avainsanoja (ja ne korostetaan, kun kirjoitetaan VBA-editoriin). Erilaiset toiminnot ovat sallittuja eri tietotyypeille. VBA:ssa on kolme pääasiallista toimintotyyppiä:
  • matemaattiset, suoritetaan numeroille, niiden tulos on numerot;
  • relaatiooperaatioita voidaan soveltaa paitsi lukuihin, niiden tulos on loogisen tyypin arvo;
  • loogisia käytetään loogisissa lausekkeissa ja niiden tuloksena on loogisia arvoja.

3. Toiminnan prioriteetit

Prioriteetti Operaatio
1
2
3
4
5
6
7
8
9
10
11
12
Toimintokutsu ja sulut
^
- (merkin vaihto)
*, /
\
Mod
+, –
>, <, >=, <=, <>, =
Ei
Ja
Tai
Xor

4. Matemaattiset funktiot

Toiminto Palautusarvo
Vatsalihakset (<число>) Luvun moduuli (absoluuttinen arvo).
Atn(<число>) Arktangentti
Cos(<число>) Kosini
Exp (<число>) Eksponentti, eli tulos luonnollisen logaritmin kantapään nostamisesta määritettyyn potenssiin
Hirsi(<число>) Luonnollinen logaritmi
Rnd (<число>) Satunnaisluku väliltä


Operandi_N on mikä tahansa kelvollinen merkkijono tai numeerinen lauseke (joka muuntaa merkkijonoksi).

Merkkijonojen yhdistämisen tuloksen tietotyyppi on String.

Jos operandi merkkijonojen ketjutuslausekkeessa on Tyhjä tai Null, VBA tulkitsee operandin nollapituiseksi merkkijonoksi (merkkijonoksi, joka ei sisällä merkkejä).

Huomautus! Kytkentäoperaation symboli (&) on erotettava muuttujan nimestä välilyönnillä, koska muuten VBA voi tulkita merkin pitkän tyypin määritelmämerkiksi.

Lisäysoperaattori merkkijonojen ketjutuksessa

Voit myös käyttää (+)-operaattoria merkkijonojen ketjuttamiseen.

Tällä operaattorilla on sama syntaksi ja vaatimukset kuin operaattorilla (&). Ymmärrä kuitenkin, että VBA:ssa (+)-operaattorin päätarkoitus on aritmeettinen yhteenlasku. Siksi on erittäin suositeltavaa käyttää operaattoria (&) merkkijonojen ketjuttamiseen, jotta vältytään monitulkintaisuudesta ohjelmakoodin lukemisessa.

Toiminnan prioriteetit

Monet ohjelmakoodin lausekkeet ovat monimutkaisia ​​(komposiittisia), ts. koostuu kahdesta tai useammasta lausekkeesta.

Arvioidessaan monimutkaisia ​​lausekkeita VBA noudattaa näitä sääntöjä:

  • Suluissa olevat lausekkeen osat arvioidaan aina ensin;
  • Tietyt toiminnot suoritetaan operaattorihierarkian mukaan (taulukko alla);
  • Jos operaattorihierarkia on yhtä suuri, ne arvioidaan vasemmalta oikealle.
Operaattori

Nämä operaattorit vertailevat kahta lauseketta määrittääkseen, ovatko ne samanarvoisia, ja jos eivät, miten ne eroavat toisistaan. On, IsNot ja Like käsitellään yksityiskohtaisesti erillisillä ohjesivuilla. Vertailuoperaattorisuhteita käsitellään tällä sivulla.

Tulos = lauseke1 vertailuoperaattori lauseke2 tulos = objekti1 objekti2 tulos = merkkijono Kuten kuvio

tulos
Edellytetään. Tulos on Boolen arvo, joka edustaa vertailun tulosta.

ilmaisu
Edellytetään. Mielivaltainen ilmaisu.

vertailuoperaattori
Edellytetään. Mikä tahansa relaatiovertailuoperaattori.

objekti1, objekti2
Edellytetään. Minkä tahansa viitatun objektin nimi.

merkkijono
Edellytetään. Mielivaltainen lauseke tyyppiä String .

kuvio
Edellytetään. Mikä tahansa merkkijonolauseke tai merkkialue.

Seuraavassa taulukossa on luettelo vertailuoperaattoreista ja ehdoista, jotka määrittävät, onko tulos tosi vai epätosi.

Huomautus

Kun verrataan merkkijonoja, merkkijonolausekkeet arvioidaan niiden aakkosjärjestyksen perusteella, joka riippuu Option Vertaa -asetuksesta.

Option Compare Binary määrittää menetelmän merkkijonojen vertailuun merkkien sisäisen binääriesityksen määräämän lajittelujärjestyksen perusteella. Lajittelujärjestys määräytyy koodisivun mukaan. Seuraava esimerkki näyttää tyypillisen binäärilajittelujärjestyksen.

A< B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø

Vaihtoehto Vertaa tekstiä määrittää merkkijonojen vertailumenetelmän, joka perustuu sovelluksen alueellisten asetusten määräämään tekstin lajittelujärjestykseen (kirjainkoolla ei väliä). Kun vaihtoehto Vertaa tekstiä on asetettu ja edellisen esimerkin merkit lajitellaan, käytetään seuraavaa tekstin lajittelujärjestystä:

(A=a)< (À= à) < (B=b) < (E=e) < (Ê= ê) < (Ø = ø) < (Z=z)

Kieliriippuvuus

Kun asetat vaihtoehdon Vertaa tekstiä, merkkijonovertailun tulos saattaa riippua alueesta, jossa sovellus on käynnissä. Kahta merkkiä voidaan pitää samanarvoisena yhdessä maassa, mutta ei toisessa. Kun käytät merkkijonovertailua tärkeiden päätösten tekemiseen, kuten kirjautumisyrityksen sallimiseen, kielialueen herkkyys tulee ottaa huomioon. Harkitse vaihtoehdon Vertaa binaaria asettamista tai sen kutsumista, mikä on aluetietoinen.

Vertailuoperaattoreiden käyttö Object-lausekkeiden kanssa ei ole sallittua, kun Option Strict On . Kun Option Strict Off ja joko lauseke1 tai lauseke2 on Object , ajonaikaiset tyypit määrittävät, miten niitä verrataan. Seuraavassa taulukossa on esitetty lausekkeiden vertailu ja vertailun tulokset riippuen ajon aikana määritetyistä operandityypeistä:

Numeerisissa vertailuissa Mitään ei käsitellään arvona 0. Merkkijonovertailuissa Mitään ei käsitellään arvona "" (tyhjä merkkijono).

Vertailuoperaattorit (< . <= , > , >= , = , <>) voi olla ylikuormitettu; tämä tarkoittaa, että luokka tai rakenne voi ohittaa käyttäytymisensä, kun operandi on kyseisen luokan tai rakenteen tyyppiä. Jos koodisi käyttää näitä operaattoreita tällaisessa luokassa tai rakenteessa, varmista, että ymmärrät sen ohitetun toiminnan. Katso lisätietoja