vba轉換資料型別(VBA變數表示陣列)
前言:
從上一篇文章開始,小編開始逐步向大家介紹如何通過VBA程式實現對EXCEL中資料的各種處理方法以及對其內建物件的操作(這裡是上一篇文章連結)。
上一篇文章,我們介紹了變數的型別及宣告方式,今天,我們將用一個篇幅介紹VBA各變數型別之間的相互轉換和運算,然後,用一個篇幅介紹如何自定義函式,最後,用一個篇幅講解變數的作用域。通過第一部分共四篇文章的介紹,大家將會對VBA中使用的變數及函式定義的方法有一個比較深刻的理解。
同上一篇文章一樣,小編採用按鈕 訊息框的形式來試驗程式結果,操作方法這裡不再贅述,大家可以參看我們上一篇文章(這裡是上一篇文章連結)。
一、將數值型變數轉化為字串型變數。
1.隱式轉換
若將一個整型變數通過字串連線運算子&相加,則得到一個字串變數,也即在運算的過程中將整型變數的值隱式轉換為了字串並與另一個字串變數連線,當然原整型變數的型別並不會發生改變,改變的只是值的型別。
例如,將字串"這是個字串:"賦值給字串變數b,將整數5賦值給整型變數a,用連線符&將b和a連線起來,並賦值給字串變數c。
在VBA編輯器中輸入如下程式碼:
程式碼解釋:
第一行:定義a為整型變數
第二行:定義b為字串型變數
第三行:定義c為字串型變數
第四行:將數值5賦值給整型變數a
第五行:將"這是個字串:"賦值給字串變數b
第六行:將字串變數b連線整型變數a產生的新字串複製給變數c
第七行:彈出訊息框,內容為字串變數c的值
切換到EXCEL介面,點選按鈕:
若我們將上面程式碼中的連線符&改為加號 ,會發生什麼呢?
修改後,點選按鈕,執行程式,然而編譯器報錯:
加號(" ")運算子可以用於連線兩個字串,也可以用於兩個數值變數的求和運算,此處將一個整形變數和一個字串變數相加,編譯器並不能夠將整形變數的值5隱式轉換為字串變數,因此出錯。
2.顯式轉換
此時我們需要用CStr()函式來顯式地將整型變數5轉換為字串變數,再用加號連線兩個字串:
在編輯器中輸入如下程式碼:
再執行程式,便可以正常執行了:
二、將字串型變數轉換為數值型變數
將字串型變數轉換為數值型變數必須滿足一個條件,即字串本身為數值,例如字串"5"、"3.14"。
1.兩個為數值的字串相加示例,在編輯器中輸入如下程式碼:
程式碼解釋:
第一行:定義a為字串型變數
第二行:定義b為字串型變數
第三行:定義c為字串型變數
第四行:將字串"5"賦值給字串變數a
第五行:將字串"8"賦值給字串變數b
第六行:將字串變數a連線字串變數b產生的新字串賦值給變數c
第七行:彈出訊息框,內容為字串變數c的值
執行程式:
此時,因為a和b都是字串,因此這裡加號的作用不是求和運算,而是起到了連線字串的作用,因此結果為"58",而不是13。
2.數值型變數和一個為數值的字串變數相加:
程式碼解釋:
第一行:定義a為整型變數
第二行:定義b為字串型變數
第三行:定義c為整型變數
第四行:將5賦值給整型變數a
第五行:將字串"8"賦值給字串變數b
第六行:將整型變數a與字串變數b求和產生的整型數值賦值給變數c
第七行:彈出訊息框,內容為變數c的值
執行程式:
此時,編譯器對字串變數b進行了一個隱式轉換,將其隱式轉換為了整型變數。
三、浮點型變數轉換為整型變數
在編輯器中輸入如下程式碼:
程式碼解釋:
第一行:定義a為單精度浮點型變數
第二行:定義a1為整型變數
第三行:定義b為單精度浮點型變數
第四行:定義b1為整型變數
第五行:將5.1的值賦值給a
第六行:將單精度浮點型變數a的值轉換為整型並賦值給a1變數
第七行:將5.5的值賦值給b
第八行:將單精度浮點型變數b的值轉換為整型並賦值給b1變數
第九行:用訊息框輸出字串"a1="並連線a1變數,連線換行符(vbcrlf),連線字串"b1=",連線b1變數的值。
執行程式:
CInt()函式為整型變數轉換函式,CInt(a)的意思就是將單精度浮點型變數a的值轉換為整型。由結果我們可以看出,整型轉換函式是採用四捨五入的方式。如果我們想去除小數,只取整數部分怎麼辦呢?可以使用Int()函式:
再次檢視結果:
但是如果我們想只要存在小數就向上進一位怎麼辦呢?仍然使用Int函式,修改如下程式碼:
執行程式:
好了,關於變數型別之間的相互轉化,小編就介紹到這裡。下一篇,我們將利用這兩篇文章的知識,試著自定義幾個能夠實際在EXCEL中使用的函式,進入實際運用了。