VBA之數據類型和常量與變數
等你點KeepLearn關注都等出蜘蛛網了
GIF
這是我VBA分享的第二篇,第一篇我們講了最最基礎的幾點:
在哪裡寫VBA?
對象的最最最淺顯的概念
對象的屬性和方法
工作簿對象和方法:新建,激活,打開,保存,關閉
Excel VBA基礎 & 工作簿的操作
一、數據類型
VBA中有十幾種額數據類型,其中常用的也有8、9種,數據類型種類繁多需要記憶,何況也可以不對變數聲明數據類型一樣可以使用,那為什麼要確定數據類型呢?
打個比方,數據類型就像你去購買一個收納產品,如果你想收納散裝的大米,但不論用左面竹籃子還是右邊的小小的收納盒顯然都不那麼對頭:
而下面這個米缸:
顯然就比較適合我們儲存大米的目標。
VBA的數據類型和我們的收納其實是一樣的。不同的數據在內存中佔用的空間是不一樣的,運算方式也是不同的。採用合適的數據類型可以節約空間,並且提高程序的效率。
當然,在初學的時候,我們其實第一目標是寫出可以運行的目標,而不是花很多時間去研究如何讓這個程序架構特別的合適,運行特別的有效率,佔用的空間儘可能的小。如果寫都寫不出來去思考這些,顯然有走都走不清楚就想飛出地球的feel不是?所以下面,我也不會列出所有的類型,只列出我們初學者常用的幾種
01
Boolean 布爾型
存儲空間:2位元組
範圍:要不是ture要不是false
這是一個在條件判斷中會出現的數據類型,真即為true,假即為false
另外需要注意,對編程語言來說,false為0,非0即為真。所以在其他數據類型轉變為Boolean時,0會成為false,其他都是true。而當Boolean類型轉變為其他數據類型的時候,false還是0,而true會變成-1.
02
數字類型
整數的常用數據類型有兩種:
Integer 整數型 (%)
存儲空間:2位元組
範圍:-32768到32767
Long 長整型 (&)
存儲空間:4位元組
表示小數的常用數據類型也有兩種:
Single 單精度浮點型 (!)
範圍:
負值範圍: -3.402823E38到-1.401298E-45
正值範圍: 1.401298E-45到3.402823E38
Double 雙精度浮點型 (#)
存儲空間:8位元組
範圍:
小數的數據類型是不是看得都暈掉了?一句話,這兩個數據類型可以表達非常非常大/小的數據。但是,Single類型只能保存6位小數,Double類型只能保存14位小數,超過部分Excel自動四捨五入截斷。
03
String 字元串 ($)
變長字元串:
存儲空間:10位元組加字元串長度
範圍:0到大約20億字元
定長字元串:
存儲空間:字元串長度
範圍:1到大約65400個字元
04
Date 日期型
Date日期型的數據可以表示日期,也可以表示時間。
存儲空間:8位元組
範圍:
日期範圍:100年1月1日到9999年12月31日
時間範圍:0:00:00到23:59:59
05
Object 對象型
上節課我們也講到了對象這個概念啦,那麼數據類型中自然也有對象型。
存儲空間:4個位元組
範圍:任何對象的引用
06
Variant 變體型
變體型數據就是可以變來變去的數據類型,當不知道變數要表示的數據是什麼類型時,就定義為Variant。
當然,這和我們的上面說的「合適的收納」的原則不太相符,所以我們應該盡量避免使用這個數據類型。
小總結
VBA有十幾種數據類型,我們這裡展示了幾種比較常用的數據類型。選擇合適的數據類型進行數據存儲可以避免浪費空間和提高程序的效率。
二、常量與變數
除了數據類型以外,我們還有一個常量和變數的概念需要學習。顧名思義,常量就是在程序過程中永遠不變的量。有的童鞋可能就有疑惑了,如果都不變,那為啥要設置個常量呢?直接輸入不就好了么?
噹噹當,這裡就要請出基本99.9%的VBA書都要舉得例子了。比如,某個程序需要多次用到一個比較精確的圓周率,3.14159265358 (背不下去了),那麼,每次需要用到的時候都來輸入一遍長長長長的圓周率一是太麻煩,二是萬一手一抖或腦一短路輸錯了,都會造成不必要的麻煩。這時候,如果我們有一個叫做P的常量來代替這一串圓周率的數字,就會方便好用得多。
再說變數,那就比常量更加好理解了,在程序執行過程中可以隨時變化的量。由於變數的可變性,它用的地方就更加廣泛啦,比如說循環中不斷增加的數字是個變數,需要從表格中變化的單元格取的數字是變數,用戶對話框輸入的數據是個變數。
小總結
數據有兩種,常量和變數,常量是程序執行過程中不變的量,而變數則相反,變數的值是可以不斷變化的
三、常量和變數的聲明和複製
還是一樣,我們這裡只講最最常用的聲明方法,第一節課只講了模塊中的sub過程,所以我們這裡也就先不考慮作用域的問題。
01
常量的聲明
Const 常量名稱 As 數據類型 = 數值
例如我們說的圓周率:
思考
思考一下,這裡為啥對圓周率選用了Double的數據量類型來聲明?
小數的兩種數據類型,Single只能儲存6位小數位數,而Double是14位哦~~
02
變數的聲明
Dim 變數名 As 數據類型
例如
Dim i As Integer
Dim i As Integer, MyPath as string
Dim i%
- 如果在一行中聲明好幾個變數,後面的Dim就不要再寫啦,一行的開頭有一個Dim就可以了。
- 最後一個Dim i%可能看蒙了大家。這是一個類型聲明字元,我懶得打integer了,用%來表示。有類型聲明字元的,我在上面介紹數據類型的地方已經給大家括弧加上去了。
聲明完數據類型之後,就是要給變數進行賦值了。對非對象數據類型的變數賦值非常簡單,直接:變數名稱=數據,完事。
例如,我需要一個字元串類型的變數WeChatAccount,要對它賦值為KeepLearn。聲明加賦值如下:
Dim WeChatAccount As String
WeChatAccount = KeepLearn
對數據類型為對象類的賦值前面需要加上Set,Set 變數名稱 = 對象
例如,我需要一個工作表類型的變數SummarySht,是我的KeepLearn工作簿的sheet1,聲明和賦值如下:
Dim SummarySht As Worksheet
Set SummarySht = workbooks("KeepLearn.xlsm").worksheets(1)
四、小例子
這節課都是一些最最最基礎的數據方面的概念,我們就在上節課的新建工作簿,另存工作簿,關閉工作簿的例子基礎上做一點點小小的優化好啦。回顧一下上節課的這個例子:
在這裡我們可以看到,保存的路徑桌面是一長串的地址且重複了三遍,想想我們今天說的常量和變數,是不是可以將這裡優化一下下?
如果我們的地址確定是這裡且在程序中不會變化了,我們將它設置為常量如下:
通過定義一個常量,並對這個常量賦值,我們就避免了多次輸入同樣的一長串的地址。
如果這個地址可能是需要中間變化的呢?我們也可以把它設置成為一個變數,然後對這個變數賦值,那麼該怎麼做?
五、最後的最後
最近為了寫VBA的這個入門教程也去借了一點書,去看了一點其他公眾號的如何寫這些問題。發現其實自己也還有很多不是很清楚的地方,所以再次說明這只是個人的一點小小的分享,目的只是為了讓你能儘快上手寫出一些小程序。
如果你需要非常非常專業的學習VBA的編程,我這種極簡的目的可能不太適合你,畢竟有的書,寫個數據類型就得有個十頁去了。
本來想嘮嗑一些別的,想想這是篇VBA分享還是算了,改天回頭寫一篇最近混跡EXCEL群收集case時候特別想說的如何好好的提問題吧。
感謝你今天耐心的看到了文章的結尾。有任何我沒說清楚你想知道的地方,歡迎留言提問或給出建議。
這是一個很隨性的公眾號,用來分享公號主自己學到的,用到的,聽到的,感受到的各種亂七八糟的事情,如果你有興趣:
1
歡迎隨手掃一掃關注公眾號
2
分享此文到朋友圈
TAG:KeepLearn |