在使用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)
'
返回2
。mycheck = vartype(datevar)
'
返回7
。mycheck = 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...