如何動態獲取VBA變數動態型別(VBA基礎知識)

2021-04-18 17:18:23 字數 3444 閱讀 3424

在使用vba變數的某些時候,我們需要獲知變數的儲存範圍,所以如何獲取變數型別是乙個重要點。通過變數型別,我們就很容易的獲取它的位元組數,從而卻動它的儲存範圍,就象c/c++所用的sizeof(var_type)那樣。那麼擺在初學者面前的頭乙個問題就是如何獲得變數型別呢?     幸運的是,vba提供了vartype(varname)函式來對應變數的資料型別。請看下表:

返回乙個integer,指出變數的子型別。

語法

vartype(varname)

必要的 varname 引數是乙個 variant,包含使用者定義型別變數之外的任何變數。

返回值常數

值描述vbempty0

empty(未初始化)

vbnull1

null(無有效資料)

vbinteger2

整數vblong3

長整數vbsingle4

單精度浮點數

vbdouble5

雙精度浮點數

vbcurrency6

貨幣值vbdate7

日期vbstring8

字串vbobject9

物件vberror10

錯誤值vbboolean11

boolean 值

vbvariant12

variant(只與變體中的陣列一起使用)

vbdataobject13

資料訪問物件

vbdecimal14

十進位制值

vbbyte17

位值vbuserdefinedtype36

包含使用者定義型別的變數

vbarray8192陣列

注意這些常數是由 visual basic 為應用程式指定的。這些名稱可以在程式**中到處使用,以代替實際值。

說明

vartype函式自身從不對vbarray返回值。vartype總是要加上一些其他值來指出乙個具體型別的陣列。常數vbvariant只與vbarray一起返回,以表明vartype函式的引數是乙個variant型別的陣列。例如,對乙個整數陣列的返回值是vbinteger+vbarray,或 8194。如果乙個物件有預設屬性,則vartype(object)返回物件預設屬性的型別。

非常好,那麼如何使用呢?這裡舉幾個例子:本示例使用vartype函式決定變數的次型別(subtype)。

dim intvar, strvar, datevar, mycheck

'初始化變數。intvar = 459: strvar = "hello world": datevar = #2/12/69#mycheck = vartype(intvar)'返回2mycheck = vartype(datevar)'返回7mycheck = vartype(strvar)'返回8

資料型別 儲存空間大小 範圍

byte 1 個位元組 0 到 255

boolean 2 個位元組 true 或 false

integer 2 個位元組 -32,768 到 32,767

long

(長整型) 4 個位元組 -2,147,483,648 到 2,147,483,647

single

(單精度浮點型) 4 個位元組 負數時從 -3.402823e38 到 -1.401298e-45;正數時從 1.401298e-45 到 3.402823e38

double

(雙精度浮點型) 8 個位元組 負數時從 -1.79769313486231e308到-4.94065645841247e-324;正數時從4.94065645841247e-324 到 1.79769313486232e308

currency

(變比整型) 8 個位元組 從 -922,337,203,685,477.5808 到 922,337,203,685,477.5807

decimal 14 個位元組 沒有小數點時為 +/-79,228,162,514,264,337,593,543,950,335,而小數點右邊有 28 位數時為 +/-7.9228162514264337593543950335;最小的非零值為 +/-0.0000000000000000000000000001

date 8 個位元組 100 年 1 月 1 日 到 9999 年 12 月 31 日

object 4 個位元組 任何 object 引用

string

(變長) 10 位元組加字串長度 0 到大約 20 億

string

(定長) 字串長度 1 到大約 65,400

variant

(數字) 16 個位元組 任何數字值,最大可達 double 的範圍

variant

(字元) 22 個位元組加字串長度 與變長 string 有相同的範圍

使用者自定義

(利用 type) 所有元素所需數目 每個元素的範圍與它本身的資料型別的範圍相同。

其中的variant是個很特殊的資料型別,它能表示除固定長度之外的所有值,並可以通過vartype來返回其資料子型別。其語法如下:

vartype(varname)

必要的 varname 引數是乙個 variant,包含使用者定義型別變數之外的任何變數。

文中部分內容拷貝於vb的幫組檔案和網上一些資料,這裡僅僅是為了分享學習體會。

Oracle PL SQL動態獲取變數

假設有一張員工表fnd employee有如下字段employee id,name,email,phone四個字段,然後我定義四個變數v1,v2,v3,v4 來存這四個字段 例 select from fnd employee into col1,col2,col3,col4 where rownu...

vba 陣列(動態陣列)

主要內容 本文章主要介紹vba中,陣列的使用,特別介紹動態陣列的使用,並有簡單事例,幫助理解。陣列是我們經常用到的儲存資料的一種媒介,他到底是什麼呢?陣列是具有相同資料型別並且共享乙個名字的一組變數的集合。通俗的說,陣列是變數。陣列的宣告 可以用dim語句或者public語句生命陣列。如 dim p...

Postman動態獲取值 動態設定全域性變數

environment 環境是一組變數,它允許您切換請求的上下文。優先使用,可以切換環境 globals 全域性變數是工作空間中始終可用的一組變數。不受切換環境影響 image.png object name image.png originheight 582 originwidth 931 si...