亞寵展、全球?qū)櫸锂a(chǎn)業(yè)風(fēng)向標(biāo)——亞洲寵物展覽會(huì)深度解析
1504
2022-06-01
'1 數(shù)據(jù)類型綜述
'在VBA中的數(shù)據(jù)類型有整數(shù)、文本、對(duì)象等類型。這些不同的類型有著特定的作用,在進(jìn)行運(yùn)算時(shí)也會(huì)占用
'不同大小的內(nèi)存,所以我們?cè)诰帉懗绦驎r(shí)為了提高運(yùn)行效率,一般都要定義數(shù)據(jù)的類型。
'2 數(shù)據(jù)類型對(duì)程序運(yùn)行的影響
'byte ? ? ? ? ? ? ? ? ? ? ? 占用1個(gè)字節(jié)
'integer,boolean ? ? ? ? ? ?占用2個(gè)字節(jié)
'long,single ? ? ? ? ? ? ? ?占用4個(gè)字節(jié)
'Double,Currency,date ? ? ? 占用8個(gè)字節(jié)
'object ? ? ? ? ? ? ? ? ? ? 占用4個(gè)字節(jié)
'string(不定長(zhǎng)) ? ? ? ? ? ? 占用10+字符長(zhǎng)度個(gè)字節(jié)
'String(定長(zhǎng)) ? ? ? ? ? ? ? 占用字符串長(zhǎng)度個(gè)字節(jié)
'Variant(任意數(shù)字類型) ? ? ?占用16個(gè)字節(jié)
'Variant(字符串) ? ? ? ? ? ?占用24+字符串長(zhǎng)度個(gè)字節(jié)
Sub sss1()
Dim x As Long
Dim t
'Dim k1 As Byte ? ? '用時(shí)0.03125s
Dim k
'Dim k1 As Integer '用時(shí)0.15625s
Dim k1 As String ? '用時(shí)0.203125s
k = 1
t = Timer
For x = 1 To 1000000
k1 = k
Next x
Debug.Print Timer - t
End Sub
'1 檢查是否為空
Sub s1()
Debug.Print Range("a1") = "" '判斷真空,無法判斷假空
Debug.Print Len(Range("a1")) = 0 '判斷真空,無法判斷假空
Debug.Print VBA.IsEmpty(Range("a1")) '假空時(shí)返回FALSE
Debug.Print VBA.TypeName(Range("a1").Value) '返回Empty表示為空
End Sub
Sub 速度測(cè)試()
Dim t
Dim x As Long
t = Timer
For x = 1 To 100000
'If Range("a1") = "" Then '用時(shí)0.81
' If Len(Range("a1")) = 0 Then '0.84
' If VBA.IsEmpty(Range("a1")) Then '速度 0.79
'If VBA.TypeName(Range("a1").Value) = Empty Then '0.84
End If
Next x
Debug.Print Timer - t
End Sub
'2 檢查是否為數(shù)字
Sub s2()
Debug.Print VBA.IsNumeric(Range("a1"))
Debug.Print Application.WorksheetFunction.IsNumber(Range("A1"))
Debug.Print VBA.TypeName(Range("A1").Value)
' Debug.Print Range("a1").Value Like "#" '判斷一位整數(shù)
' Debug.Print Range("a1") Like "*#*" '判斷是否包含數(shù)字
End Sub
Sub 速度測(cè)試2()
Dim t
Dim x As Long
t = Timer
For x = 1 To 100000
'If VBA.IsNumeric(Range("a1")) Then '用時(shí)0 0.79
'If Application.WorksheetFunction.IsNumber(Range("A1")) Then '0.9218
'If VBA.TypeName(Range("A1").Value) = "Double" Then '速度 0.84
End If
Next x
Debug.Print Timer - t
End Sub
'3 檢查是否為文本
Sub t3()
Debug.Print Application.IsText(Range("a1"))
Debug.Print "B" Like "[A-Za-z]" '判斷是否為字母
Debug.Print Len(Range("a1"))
Debug.Print Range("a1") Like "*[一-龥]*" '判斷字符串中是否包含漢字
End Sub
'4 判斷結(jié)果是否為錯(cuò)誤值
Sub s4()
Debug.Print VBA.IsError(Range("a1"))
Debug.Print TypeName(Range("a1").Value)
End Sub
'5 判斷是否為數(shù)組
Sub s5()
Dim arr
arr = Range("A1:A2")
Erase arr
Debug.Print VBA.IsArray(arr)
End Sub
'6 判斷是否為日期
Sub s6()
Debug.Print VBA.IsDate(Range("a2"))
End Sub
'一、類型轉(zhuǎn)換函數(shù):CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng, CStr, CVar
'上述函數(shù)是把表達(dá)式轉(zhuǎn)換成相對(duì)應(yīng)的數(shù)字類型,比如clng轉(zhuǎn)換成長(zhǎng)整型,cstr轉(zhuǎn)換成文本型
Sub ss1()
Dim s As Integer
s = 2334
MsgBox 截取(CStr(s)) '因?yàn)樽远x函數(shù)參數(shù)要求是文本類型,而s是數(shù)值類型,所以需要用cstr轉(zhuǎn)換成文本類型
End Sub
Function 截取(x As String)
截取 = Left(x, 2)
End Function
Sub ss2()
Debug.Print 1 + True 'CInt(1 = 1)
End Sub
'二、Format函數(shù)
'format函數(shù)用法等同于工作表中的text函數(shù),可以格式化顯示數(shù)字或文本
Sub ss3()
Dim n, n1
n = 234.3372
n1 = 41105
Debug.Print Format(n, "0.00")
Debug.Print Format(n, "0")
Debug.Print Format(n, "\價(jià)格\:0.00")
Debug.Print Format(n1, "yyyy-mm-dd")
End Sub
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。