Hosszú változó típus
A VBA Hosszú az adattípus nagyon hosszú adatértékek tárolására szolgál (-2 147 483 648-2 147 483 648). Csak egész számokat tárolhat (tizedesjegyek nélkül).
Hosszú változó deklarálásához használja a Dim Statement (a Dimension rövidítése) kifejezést:
1 | Dim lngA as Long |
Ezután, ha értéket szeretne rendelni egy változóhoz, egyszerűen használja az egyenlőségjelet:
1 | lngA = 30000 |
Ennek az eljárásba történő beillesztése így néz ki:
12345678 | Sub lngExample ()'deklarálja a hosszú változótDim lngA as Long'töltse ki a hosszú változótlngA = 30000'mutasd az üzenetdoboztMsgBox lngAEnd Sub |
Ha futtatja a fenti kódot, a következő üzenetmező jelenik meg.
LongLong adattípus
A LongLong adattípus csak a Microsoft Office 64 bites verziójában érhető el. Ha az Office 32 bites verzióját futtatja 64 bites gépen, ez az adattípus nem lesz elérhető. Támogatja a -9,223,372,036,854,775,808 és 9,223,372,036,854,775,807 közötti számokat.
1 | Dim lngA mint LongLong |
LongPtr adattípus
A LongPtr -t a Microsoft Office 64 bites verziójának támogatása érdekében vezették be a VBA -ba. 32 bites rendszeren Long, 64 bites rendszeren LongLongként kezelik.
1 | Dim lngA mint LongPtr |
Megjegyzés: A LongPtr nem érhető el az Excel 2007 vagy korábbi verzióiban.
Tizedes értékek és hosszú adattípusok
A hosszú változók nem tudják tárolni a tizedes értékeket. Ha hosszú tizedes számot ad át, akkor a tizedes számot kerekítve távolítja el a tizedest.
Ezért ha az alábbi eljárást hajtaná végre:
12345678 | LngExampleB ()'deklarálja a hosszú változótDim lngA as Long'töltse ki a hosszú változótlngA = 3524,12'mutasd az üzenetdoboztMsgBox lngAEnd Sub |
A tizedes érték lefelé lesz kerekítve, és a következő üzenetet adja vissza:
Ez az alábbi kód azonban:
12345678 | Sub LngExampleB ()'deklarálja a hosszú változótDim lngA as Long'töltse ki a hosszú változótlngA = 3524,12'mutasd az üzenetdoboztMsgBox lngAEnd Sub |
A következő üzenetmezőt adja vissza (felfelé kerekítve):
Tizedes / kettős adattípus
Ha tizedesjegyet szeretne tárolni, akkor deklarálnia kell egy változót, amely lehetővé teszi a tizedesjegyeket. Három adattípust használhat - Egyszeres, Dupla vagy Pénznem.
1 | Dim sngPrice Single |
1 | Dim dblÁr dupla |
1 | Halvány curPrice mint pénznem |
Az Egyetlen adattípus a tizedespontot kissé eltérően kerekíti a kettős és a pénznem adattípustól, ezért a pontosság érdekében előnyös a kettős az egyszeres használata. A kettesben legfeljebb 12 tizedesjegy lehet, míg a pénznemben és az egyesben akár 4 tizedesjegy is lehet.
Hosszú változó deklarálása modul vagy globális szinten
Az előző példákban a Long változót deklaráltuk egy eljárásban. Az eljárással deklarált változók csak ezen az eljáráson belül használhatók.
Ehelyett hosszú változókat deklarálhat modul vagy globális szinten.
Modul szint
A modul szintje a változókat a kódmodulok tetején a Homályos nyilatkozat.
Ezek a változók az adott kódmodul bármely eljárásával használhatók.
Globális szint
Globális szinten a változókat a kódmodulok tetején is deklarálják. Azonban ahelyett, hogy a Homályos nyilatkozatot, használja a Nyilvános utasítás, amely azt jelzi, hogy a hosszú változó elérhető a VBA -projekt során.
1 | Nyilvános lngA mint hosszú |
Ha a hosszú változót modul szinten deklarálná, majd egy másik modulban próbálná használni, akkor hiba lépne fel.
Ha azonban a Nyilvános kulcsszót használta volna a hosszú változó deklarálásához, a hiba nem fordul elő, és az eljárás tökéletesen fut.
Hosszú tárolás karakterláncként
Előfordulhat, hogy hosszú adattípust szeretne karakterlánccá formázni - például dátumot, vagy megjeleníthet egy valuta szimbólumot.
Ennek eléréséhez használja a Formátum funkciót.
A következő eljárás:
1234567891011 | Sub TestLongToString ()'deklarálja a string változótDim strDate karakterláncként'deklarálja a hosszú és töltse ki az értéketDim lngDate, amígLngDate = 44055'konvertálja a hosszú dátummal formázott karakterlánccástrDate = Formátum (lngDate, "dd mmmm yyyy")'nézd meg az eredménytHibakeresés. StrDate nyomtatásaEnd Sub |
az alábbi eredményt adja vissza:
és a következő eljárást
1234567891011 | Sub TestLongtoCurrencyString ()'deklarálja a string változótDim strMoney karakterláncként'deklarálja a hosszú és töltse ki az értéketDim lngValue As LonglngValue = 44055'konvertálja a hosszú karakterláncot valuta szimbólummalstrMoney = Formátum (lngValue, "$#, ## 0")'nézd meg az eredménytMsgBox strMoneyEnd Sub |
ezt az eredményt adja vissza: