VBA hosszú adattípus (Dim változó)

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:

wave wave wave wave wave