VBA CLng funkcija - Kaip naudotis CLng funkcija? (su pavyzdžiais)

„Excel VBA CLng“ funkcija

„CLNG“ reiškia „konvertuoti į ilgą“ duomenų tipą. Duomenų tipo sveikojo skaičiaus apribojimas yra nuo -32768 iki 32767, taigi bet koks perteklius, kurį norite išsaugoti šiems kintamiesiems, VBA turime naudoti ilgą duomenų tipą.

Kintamieji yra būtini bet kuria programavimo kalba, o VBA taip pat nesiskiria. Nenaudojant kintamųjų, rašyti ilgus kodus yra beveik neįmanoma. Jei kintamieji yra būtini, tada duomenų tipo kintamasis, kurį priskiriame šiems kintamiesiems, yra dar kritiškesnis, nes jiems suteikiamas duomenų tipas yra rezultatas, kurį gauname.

Dažnai skaitinius duomenis galime priskirti kaip „Stygas“, todėl atliekant skaičiavimus bus klaida, todėl naudodami konvertuojimo funkcijas galime konvertuoti norimą duomenų tipą. Dažniausiai naudojamos keitiklio funkcijos yra CLng, CInt, CDbl, CDate, CDec VBA. Šiame straipsnyje parodysime apie sveiko skaičiaus duomenų tipo konvertavimo funkciją „CLNG“.

Sintaksė

Žemiau pateikiama CLNG funkcijos sintaksė.

  • Išraiška yra ne kas kita, o vertė arba kintamasis, kurį norime konvertuoti į LONG duomenų tipą.

Pastaba: Vertė, kurią bandome konvertuoti, turėtų būti skaitinė, išskyrus skaitinę, reikšmę „Vykdymo laiko klaida 13: neatitikimas“.

CLng funkcijos naudojimo VBA pavyzdžiai

1 pavyzdys

Dabar pamatysime, kaip konvertuoti įrašytą teksto vertę į „Long“ duomenų tipą.

Pavyzdžiui, pažvelkite į žemiau pateiktą kodą.

Kodas:

Sub CLNG_Example1 () Dim LongNumber As String Dim LongResult As Long LongNumber = "2564589" LongResult = CLng (LongNumber) MsgBox LongResult End Sub Sub

Taigi, atidžiai išnagrinėkite kodą, kad suprastumėte, kaip tai veikia.

Pirma, mes paskelbėme du kintamuosius, atitinkamai String ir Long.

Kodas:

Dim LongNumber As String Dim LongResult as Long

Eilutės kintamajam priskyrėme vertės numerį, bet dvigubomis kabutėmis, taigi, tai padarys tai, kad skaičius „2564589“ bus traktuojamas kaip eilutė, o ne kaip „Ilgasis“ kintamasis. Dabar kitam kintamajam „LongResult“ naudojome funkciją „Clng“ („LongNumber“), kad eilutės saugomas numeris būtų paverstas LONG kintamuoju.

Kitame pranešimų laukelyje rezultatas bus rodomas kaip ILGAS skaičius, paverstas eilute į ilgą duomenų tipą.

Išvestis:

2 pavyzdys

Dabar pažvelkite į žemiau esantį kodą.

Kodas:

Sub CLNG_Example2 () Dim LongNumber As String Dim LongResult As Long LongNumber = "Long Number" LongResult = CLng (LongNumber) MsgBox LongResult End Sub

Tai turėtų mums suteikti „Tipo neatitikimo“ rezultatą.

Suprasti, kodėl įvyksta klaida, yra esminis dalykas norint ištaisyti klaidą. Atidžiai išnagrinėję pirmo kintamojo „LongNumber“ kintamuosius, priskyrėme teksto vertę kaip „Ilgas skaičius“, tada naudojome „Excel VBA CLNG“ funkciją, kad tai paverstume LONG duomenų tipu.

Priežastis, kodėl gavome šią klaidą, yra ta, kad LONG duomenų tipas gali priimti tik skaitmeninius duomenų tipus, nes mes pateikėme eilutės reikšmę kintamajam, todėl jis negali konvertuoti eilutės vertės ar teksto vertės į ilgą duomenų tipą. Taigi, klaida pateikiama kaip „Tipo neatitikimas“.

3 pavyzdys

Dar viena klaida, kurią gauname su LONG duomenų tipu, yra „Perpildymo klaida VBA“, ty ilgojo kintamojo duomenų tipas gali turėti reikšmes nuo 2 147 483 648 2 147 483 647. Taigi bet kokia suma, viršijanti šią sumą, sukels perpildymo klaidą.

Pavyzdžiui, pažvelkite į žemiau pateiktą kodą.

Kodas:

Sub CLNG_Example3 () Dim LongNumber As String Dim LongResult As Long LongNumber = "25645890003" LongResult = CLng (LongNumber) MsgBox LongResult End Sub

Kintamajam „LongNumber“ priskyriau skaičių „25645890003“, kuris viršija „Long“ duomenų tipo ribą. Kai vykdysime pirmiau nurodytą kodą, jis susidurs su klaida „Perpildymas“ .

Taigi, konvertuodami bet kurį kitą duomenų tipą į ilgų duomenų tipą, turime nepamiršti visų aukščiau nurodytų dalykų.

Čia prisimintinas dalykas

  • CLNG reiškia konvertuoti į ilgą.
  • Ši funkcija konvertuoja kitą duomenų tipą į ilgą duomenų tipą.
  • Norėdami išvengti perpildymo klaidos, turite žinoti išplėstinio duomenų tipo ribą.

Įdomios straipsniai...