Excel VBA -merkkijono kokonaislukuun
Merkkijono ja kokonaisluku ovat yleisiä tietotyyppejä, mutta usein osana data-analyysiamme saatamme haluta muuntaa merkkijonotyypin muuttujan kokonaislukutietotyypiksi, ja tämä on mahdollista käyttämällä VBA: n ”CINT” -toimintoa.
![](https://cdn.know-base.net/3303252/vba_string_to_integer_-_use_cint_function_for_data_conversion.jpg.webp)
CINT-toiminnon syntaksi
“CINT” on luokiteltu tietotyypin muunnosfunktioksi. Tämä toiminto muuntaa toimitetun lausekkeen kokonaislukutietotyypiksi. Kun sanon "lauseke", sen on oltava numeerinen arvo, joka on VBA: n kokonaislukutyyppialueella, eli välillä -32768 - 32767.
Katsokaa nyt VBA: n CINT-funktion syntaksia.
![](https://cdn.know-base.net/3303252/vba_string_to_integer_-_use_cint_function_for_data_conversion_2.jpg.webp)
- Lauseke on arvo tai muuttuja, joka sisältää muunnettavan luvun kokonaislukutyypiksi.
Tässä artikkelissa näytämme sinulle kokonaislukutietotyypin muuntamisen merkkijonosta kokonaislukuun funktion "CINT" avulla.
Esimerkkejä CINT-toiminnasta VBA: ssa
Esimerkki 1
Suoritetaan ensimmäinen esimerkki yhden murtoluvun muuntamisesta kokonaislukutyypiksi.
Koodi:
Al CINT_Example1 () Dim IntegerNumber as String Dim IntegerResult As Integer IntegerNumber = 2564,589 IntegerResult = CInt (IntegerNumber) MsgBox IntegerResult End Sub
- Edellä mainitussa muuttujan ”IntegerNumber” koodissa olen määrittänyt arvon arvoksi ”2564,589”.
- Seuraavalla rivillä olen käyttänyt CINT-toimintoa. Joten se muuntaa annetun arvon lähimpään kokonaislukuun.
![](https://cdn.know-base.net/3303252/vba_string_to_integer_-_use_cint_function_for_data_conversion.gif)
Joten saimme tuloksen - 2565, ja toimitettu numero on 2564,589. Kun desimaaliarvo on yli 0,5, CINT-funktiot pyöristävät numeron seuraavaan kokonaislukuun. Kun desimaaliarvo on pienempi tai yhtä suuri kuin 0,5 CINT-funktiota, pyöristetään alas samaan kokonaislukuun.
Katso esimerkki alla olevasta koodista, jossa luku on alle 0,5
Koodi:
Al CINT_Example1 () Dim IntegerNumber as String Dim IntegerResult As Integer IntegerNumber = 2564 - 0,5 IntegerResult = CInt (IntegerNumber) MsgBox IntegerResult End Sub
Tämän pitäisi antaa tulos 2564, ei 2565.
![](https://cdn.know-base.net/3303252/vba_string_to_integer_-_use_cint_function_for_data_conversion_2.gif)
Esimerkki 2
Yritän nyt määrittää numeron, joka on yli kokonaislukutyypin rajan.
Koodi:
Al CINT_Example2 () Dim IntegerNumber as String Dim IntegerResult As Integer IntegerNumber = 51456.785 IntegerResult = CInt (IntegerNumber) MsgBox IntegerResult End Sub
Olen määrittänyt numeroksi "IntegerNumber = 51456.785", joka on enemmän kuin kokonaislukutietorajoituksen raja. Jos yritän nyt suorittaa koodin, se heittää ylivuotovirheen VBA: ssa.
![](https://cdn.know-base.net/3303252/vba_string_to_integer_-_use_cint_function_for_data_conversion_3.jpg.webp)
Aina kun annettu numero on suurempi kuin kokonaislukutietotyyppi, näytetään yksinkertainen sanomaruutu, jossa lukee "Numero on enemmän kuin kokonaislukutietojen tyyppi".
Koodi:
Sub CINT_Example2 () Dim IntegerNumber as String Dim IntegerResult As Integer IntegerNumber = 51456.785 On Error GoTo Message: IntegerResult = CInt (IntegerNumber) Message: Jos Virh.Number = 6, MsgBox IntegerNumber & "on enemmän kuin kokonaisluvun tyyppi" End Sub
Tämä näyttää alla olevan kaltaisen viestin aina, kun annettu numero on kokonaislukutyyppialueen ulkopuolella.
![](https://cdn.know-base.net/3303252/vba_string_to_integer_-_use_cint_function_for_data_conversion_3.gif)
Esimerkki 3
Yritän nyt määrittää arvon, joka ei ole numeerinen.
Al CINT_Example2 () Dim IntegerNumber as String Dim IntegerResult As Integer IntegerNumber = "Hello" IntegerResult = CInt (IntegerNumber) MsgBox IntegerResult End Sub
Olen määrittänyt arvon "Hei", joka ei ole numeerinen. Tämä aiheuttaa tyypin ristiriitavirheen.
![](https://cdn.know-base.net/3303252/vba_string_to_integer_-_use_cint_function_for_data_conversion_4.jpg.webp)
Sen sijaan, että näytetään tällainen virhe, laitetaan yksinkertainen tietoviestiruutu käyttäjän eteen. Alla oleva koodi laittaa viestiruudun, jossa sanotaan "Annettu lauseke on ei-numeerinen, joten sitä ei voi muuntaa".
Koodi:
Ala CINT_Example2 () Dim IntegerNumber as String Dim IntegerResult As Integer IntegerNumber = "Hello" On GoTo Message: IntegerResult = CInt (IntegerNumber) Message: Jos Virh.Number = 13 Sitten MsgBox IntegerNumber & ": Annettu lausekearvo ei ole numero , Joten ei voi muuntaa "End Sub
Tämä näyttää alla olevan viestiruudun.
![](https://cdn.know-base.net/3303252/vba_string_to_integer_-_use_cint_function_for_data_conversion_4.gif)
Muistettavaa
- CINT muuntaa arvon toisesta tietotyypistä kokonaislukutietotyypiksi.
- Kokonaisluku voi pitää arvoja välillä -32768 - 32767, mikä tahansa näiden numeroiden yläpuolella aiheuttaa ylivuotovirheen.
- Vain merkkijonotietotyyppi sisältää numeerista tietoa, joka muunnetaan kokonaislukutietotyypiksi.
Suositellut artikkelit
Tämä on opas VBA-merkkijonolle kokonaislukuun. Tässä keskustellaan esimerkeistä merkkijonosta kokonaislukuun Excel VBA: ssa käyttämällä CINT-toimintoa, käytännön esimerkkejä ja ladattavaa Excel-mallia. Alla on joitain hyödyllisiä artikkeleita, jotka liittyvät VBA: han -
- VBA jakaa merkkijonon taulukkoon
- VBA-kieli tähän mennessä
- VBA-merkkijonojen vertailu
- VBA Vaihda merkkijono