Range-objektilla on kymmeniä ominaisuuksia. Voit kirjoittaa VBA-ohjelmia keskeytyksettä seuraavat 12 kuukautta etkä koskaan käytä niitä kaikkia. Täältä saat lyhyen yleiskatsauksen joistakin yleisimmin käytetyistä Excel VBA Range -ominaisuuksista. Katso täydelliset tiedot VBE:n ohjejärjestelmästä. (Katso näistä lisäresursseista apua Excel VBA:n kanssa .)
Jotkut Excel VBA Range -ominaisuudet ovat vain luku -ominaisuuksia, mikä tarkoittaa, että koodisi voi tarkastella niiden arvoja, mutta ei voi muuttaa niitä ("Katso, mutta älä koske"). Esimerkiksi jokaisella Excel VBA Range -objektilla on Address-ominaisuus, joka sisältää alueen osoitteen. Voit käyttää tätä vain luku -ominaisuutta, mutta et voi muuttaa sitä – mikä on täysin järkevää, kun ajattelet sitä.
Muuten, seuraavat esimerkit ovat tyypillisesti lausuntoja eikä täydellisiä menettelyjä. Jos haluat kokeilla jotakin näistä (ja sinun pitäisi), luo alitoiminto tehdäksesi niin. Lisäksi monet näistä VBA-käskyistä toimivat oikein vain, jos laskentataulukko on aktiivinen taulukko.
Excel VBA: Arvo-ominaisuus
Arvo-ominaisuus edustaa solun sisältämää arvoa. Se on luku-kirjoitusominaisuus, joten VBA-koodisi voi joko lukea tai muuttaa arvoa.
Seuraava lause näyttää viestiruudun, joka näyttää arvon taulukon 1 solussa A1:
MsgBox Worksheets("Sheet1").Range("A1").Arvo
On selvää, että voit lukea Arvo-ominaisuuden vain yksisoluiselle Range-objektille. Esimerkiksi seuraava lauseke luo virheen:
MsgBox Worksheets("Sheet1").Alue("A1:C3").Arvo
Voit kuitenkin muuttaa Arvo-ominaisuutta minkä tahansa kokoiselle alueelle. Seuraava lause kirjoittaa luvun 123 jokaiseen alueen soluun:
Työarkit("Sheet1").Alue("A1:C3").Arvo = 123
Arvo on Excel VBA Range -objektin oletusominaisuus. Toisin sanoen, jos jätät väliltä ominaisuuden pois, Excel käyttää Arvo-ominaisuuttaan. Molemmat lauseet syöttävät arvon 75 aktiivisen laskentataulukon soluun A1:
Alue("A1"). Arvo = 75
Alue("A1") = 75
Excel VBA: Teksti-ominaisuus
Teksti-ominaisuus palauttaa merkkijonon, joka edustaa tekstiä sellaisena kuin se näkyy solussa – muotoillun arvon. Teksti-ominaisuus on vain luku -tilassa. Oletetaan, että solu A1 sisältää arvon 12,3 ja se on muotoiltu näyttämään kaksi desimaalia ja dollarimerkki (12,30 dollaria). Seuraava lause näyttää viestiruudun, joka sisältää 12,30 dollaria:
MsgBox Worksheets("Sheet1").Range("A1").Text
Mutta seuraava lause näyttää viestiruudun, joka sisältää 12.3:
MsgBox Worksheets("Sheet1").Range("A1").Arvo
Jos solu sisältää kaavan, Text-ominaisuus palauttaa kaavan tuloksen. Jos solu sisältää tekstiä, Text-ominaisuus ja Value-ominaisuus palauttavat aina saman asian, koska tekstiä (toisin kuin numeroa) ei voida muotoilla näytettäväksi eri tavalla.
Excel VBA: Count-ominaisuus
Ominaisuus Count palauttaa solujen määrän alueella. Se laskee kaikki solut, ei vain ei-tyhjät solut. Count on vain luku -ominaisuus, kuten voit odottaa. Seuraava käsky käyttää alueen Count-ominaisuutta ja näyttää tuloksen (9) viestiruudussa:
MsgBox Range("A1:C3").Count
Excel VBA: Sarake- ja Rivi-ominaisuudet
Column-ominaisuus palauttaa yksisoluisen alueen sarakenumeron. Sen apuväline, Rivi-ominaisuus, palauttaa yksisoluisen alueen rivinumeron. Molemmat ovat vain luku -ominaisuuksia. Esimerkiksi seuraava lause näyttää 6, koska solu F3 on kuudennessa sarakkeessa:
MsgBox Sheets("Sheet1").Alue("F3").Sarake
Seuraava lauseke näyttää 3, koska solu F3 on kolmannella rivillä:
MsgBox Sheets("Sheet1").Alue("F3").Rivi
Jos Excel VBA Range -objekti koostuu useammasta kuin yhdestä solusta, Column-ominaisuus palauttaa alueen ensimmäisen sarakkeen sarakenumeron ja Row-ominaisuus palauttaa alueen ensimmäisen rivin rivinumeron.
Älä sekoita Column- ja Row-ominaisuuksia Sarakkeet- ja Rivit-ominaisuuksiin. Sarake- ja Rivi-ominaisuudet palauttavat yhden arvon. Sarakkeet ja rivit -ominaisuudet puolestaan palauttavat Range-objektin. Mitä eroa "s" tekee.
Excel VBA: Osoite-ominaisuus
Address, vain luku -ominaisuus, näyttää Range-objektin soluosoitteen absoluuttisena viittauksena (dollarimerkki ennen sarakkeen kirjainta ja ennen rivinumeroa). Seuraava lause näyttää alla olevan viestiruudun:
Viestilaatikon alue (solut (1, 1), solut (5, 5)). Osoite
Tämä viestiruutu näyttää 5 x 5 -alueen Address-ominaisuuden.
Excel VBA: HasFormula-ominaisuus
HasFormula-ominaisuus (joka on vain luku -tilassa) palauttaa True-arvon, jos yksisoluinen alue sisältää kaavan. Se palauttaa False, jos solu sisältää jotain muuta kuin kaavan (tai on tyhjä). Jos alue koostuu useammasta kuin yhdestä solusta, VBA palauttaa True vain, jos kaikki alueen solut sisältävät kaavan tai False, jos kaikilla alueen soluilla ei ole kaavaa. Ominaisuus palauttaa Null-arvon, jos alue sisältää yhdistelmän kaavoja ja epäkaavoja. Null on eräänlainen ei-kenenkään maa: vastaus ei ole tosi eikä epätosi, ja kaikilla alueen soluilla voi olla tai ei ole kaava.
Sinun on oltava varovainen, kun työskentelet ominaisuuksien kanssa, jotka voivat palauttaa Null-arvon. Tarkemmin sanottuna ainoa tietotyyppi, joka voi käsitellä Nullia, on Variant.
Oletetaan esimerkiksi, että solu A1 sisältää arvon ja solu A2 sisältää kaavan. Seuraavat lauseet luovat virheen, koska alue ei koostu kaikista kaavoista tai kaikista epäkaavoista:
Dim FormulaTest Boolean
FormulaTest = Alue("A1:A2").HasFormula
Boolen tietotyyppi voi käsitellä vain tosi tai epätosi. Null saa Excelin valittamaan ja näyttämään virheilmoituksen. Tämän tyyppisen tilanteen korjaamiseksi paras tapa on varmistaa, että FormulaTest-muuttuja on ilmoitettu muunnelmaksi eikä Boolen arvoksi. Seuraava esimerkki käyttää VBA:n kätevää TypeName-funktiota (yhdessä If-Then-Else-rakenteen kanssa) määrittämään FormulaTest-muuttujan tietotyypin. Jos alueella on sekoitus kaavoja ja epäkaavoja, viestiruudussa näkyy Mixed! Muussa tapauksessa se näyttää True tai False .
Sub CheckFormulas()
Dim FormulaTest Varianttina
FormulaTest = Alue("A1:A2").HasFormula
Jos TypeName(FormulaTest) = "Null" Sitten
MsgBox "Mixed!"
Muu
MsgBox FormulaTest
Loppu Jos
Lopeta ala
Excel VBA: Font-ominaisuus
Omaisuus voi palauttaa esineen. Excel VBA Range -objektin Font-ominaisuus on toinen esimerkki toimivasta konseptista. Fontti-ominaisuus palauttaa Font-objektin.
Fonttiobjektilla, kuten saatat odottaa, on monia käytettävissä olevia ominaisuuksia. Jos haluat muuttaa jotakin alueen kirjasimen osiota, sinun on ensin käytettävä alueen Font-objektia ja sitten manipuloitava objektin ominaisuuksia. Tämä saattaa olla hämmentävää, mutta ehkä tämä esimerkki auttaa.
Seuraava käsky käyttää Range-objektin Font-ominaisuutta palauttamaan Font-objektin. Sitten Font-objektin Bold-ominaisuuden arvoksi asetetaan True. Selkeässä englannin kielessä tämä lause näyttää solun lihavoituna:
Alue("A1").Font.Bold = tosi
Totuus on, että sinun ei todellakaan tarvitse tietää, että käytät erityistä Font-objektia, joka sisältyy Excel VBA Range -objektiin. Niin kauan kuin käytät oikeaa syntaksia, se toimii hyvin. Usein toimintojesi tallentaminen makrotallentimella kertoo kaiken, mitä sinun tulee tietää oikeasta syntaksista.
Excel VBA: Sisätilojen ominaisuus
Tässä on vielä yksi esimerkki ominaisuudesta, joka palauttaa objektin. Range-objektin Interior-ominaisuus palauttaa Interior-objektin (outo nimi, mutta niin sitä kutsutaan). Tämäntyyppinen objektiviittaus toimii samalla tavalla kuin Font-ominaisuus.
Esimerkiksi seuraava käsky muuttaa Range-objektin sisältämän Interior-objektin Color-ominaisuuden:
Alue("A1").Sisä.Väri = 8421504
Toisin sanoen tämä lause muuttaa solun taustan keskiharmaaksi. Mikä tuo on? Etkö tiennyt, että 8421504 on keskiharmaa? Saat näkemyksiä Excelin upeasta värimaailmasta lähellä olevasta sivupalkista "Nopea ja likainen väripohjamaali".
Excel VBA: Kaava-ominaisuus
Kaava-ominaisuus edustaa kaavaa solussa. Tämä on luku-kirjoitusominaisuus, joten voit käyttää sitä tarkastellaksesi kaavaa solussa tai lisätäksesi kaavan soluun. Esimerkiksi seuraava käsky syöttää SUMMA-kaavan soluun A13:
Alue("A13"). Kaava = "=SUMMA(A1:A12)"
Huomaa, että kaava on tekstimerkkijono ja se on lainausmerkeissä. Huomaa myös, että kaava alkaa yhtäläisyysmerkillä, kuten kaikki kaavat.
Jos kaava itsessään sisältää lainausmerkkejä, asiat muuttuvat hieman hankalaksi. Sano, että haluat lisätä tämän kaavan käyttämällä VBA:ta:
=SUMMA(A1:A12)&"kaupat"
Tämä kaava näyttää arvon, jota seuraa sana Stores . Jotta tämä kaava olisi hyväksyttävä, sinun on korvattava jokainen kaavan lainausmerkki kahdella lainausmerkillä. Muuten VBA hämmentyy ja väittää syntaksivirheen (koska on!). Joten tässä on lause, joka syöttää lainausmerkkejä sisältävän kaavan:
Alue("A13"). Kaava = "=SUMMA(A1:A12)&"" Kaupat"""
Muuten, voit käyttää solun Formula-ominaisuutta, vaikka solulla ei olisi kaavaa. Jos solulla ei ole kaavaa, Kaava-ominaisuus palauttaa saman kuin sen Arvo-ominaisuus.
Jos haluat tietää, onko solulla kaava, käytä HasFormula-ominaisuutta.
Huomaa, että VBA "puhuu" Yhdysvaltain englantia. Tämä tarkoittaa, että kaavan sijoittamiseksi soluun on käytettävä Yhdysvaltain syntaksia. Jos käytät Excelin muuta kuin englanninkielistä versiota, lue lisätietoja ohjejärjestelmän FormulaLocal-ominaisuudesta.
Excel VBA: NumberFormat-ominaisuus
NumberFormat-ominaisuus edustaa Range-objektin numeromuotoa (ilmaistuna tekstimerkkijonona). Tämä on luku-kirjoitusominaisuus, joten VBA-koodisi voi joko tarkastella numeromuotoa tai muuttaa sitä. Seuraava lause muuttaa sarakkeen A lukumuodon prosentteina kahdella desimaalilla:
Sarakkeet("A:A").NumberFormat = "0.00%"
Seuraa näitä ohjeita nähdäksesi luettelon muista numeromuodoista (mitä vielä parempi, käynnistä makrotallennin samalla kun teet tämän):
Aktivoi laskentataulukko.
Paina Ctrl+1 päästäksesi Muotoile solut -valintaikkunaan.
Napsauta Numero-välilehteä.
Valitse Mukautettu luokka tarkastellaksesi ja ottaaksesi käyttöön joitain muita numeromuotoja.