在 VBA 中將字串轉換為數字
本文將討論如何在 VBA Excel 中將字串轉換為數字。有一個分步指南和許多示例供我們理解。
在 VBA 中將字串轉換為數字
在 VBA 程式碼中,必須將儲存為文字的數字轉換為實數。我們有許多轉換選項。
我們可以將字串轉換為 Byte、Integer、Long、Single、Double、Currency 和 Decimal 資料型別的數字。我們將通過示例詳細討論每個轉換。
在 VBA 中將字串轉換為位元組
藉助以下程式碼,我們可以輕鬆地將字串轉換為多個位元組資料型別。
# vba
byte = CByte(str)
我們可以使用 CByte()
函式來實現這種轉換。上面的語句有兩個專案:CByte()
和字串。
CByte()
函式強制字串變為位元組型別。CByte()
通常用於執行國際化的字串到位元組資料型別的轉換。
簡單來說,CByte()
通常區分不同的十進位制/千位分隔符和許多取決於你計算機位置的貨幣選項。位元組資料型別可以容納的範圍是 0 到 225。如果你的字串不在此範圍內,則會發生錯誤。
這是一個巨集示例,其中我們將 convertStr
作為引數將字串轉換為位元組。
# vba
Function convertStr(newStr As Variant)
MsgBox (CByte(newStr))
End Function
Sub newFunc()
convertStr ("12")
End Sub
輸出:
在 VBA 中將字串轉換為整數
藉助以下語句,你可以輕鬆地將字串轉換為整數資料型別的數字。該函式的語法如下所示。
# vba
CInt(newStr)
建議使用 Clnt()
函式將字串更改為整數資料型別。此函式強制字串更改為整數資料型別。
如果字串包含分數,此函式會將其轉換為整數。如果分數正好是 0.4,此函式會將其更改為最接近的偶數。
例如:
# vba
0.4 will become 0.
1.6 and 2.4 both will become 2.
3.7 and 4.3 will become 4
Clnt()
通常用於執行國際通用的字串轉換為整數資料型別。簡單來說,Clnt()
通常區分不同的十進位制/千位分隔符和許多取決於我們計算機位置的貨幣選項。
整數資料型別可以容納數字的範圍是 -32,768 到 32,767。如果你的字串不在此範圍內,則會發生錯誤。
讓我們通過一個示例並使用 CInt()
函式,如下所示。此示例將 newStr
設定為將字串更改為整數的引數,如下所示。
# vba
Function convertToInteger(newStr As Variant)
MsgBox (CInt(newStr))
End Function
Sub newFunc()
convertToInteger ("12.5")
End Sub
輸出:
在 VBA 中將字串轉換為長整型
我們可以使用 CLng()
函式來實現這種轉換。該函式的語法如下所示。
# vba
CLng(Str)
當我們的目標是將字串更改為幾種長資料型別時,我們可以使用 CLng()
函式。此語句中的專案是 CLng()
和字串。
此函式強制將字串更改為長資料型別。
如果一個字串包含一個分數,這個函式會將它四捨五入。如果分數恰好為 0.4,此函式會將其更改為最接近的偶數,如下所示。
# vba
0.4 will become 0.
1.6 and 2.4 both will become 2.
3.7 and 4.3 will become 4
CLng()
通常用於執行國際化的字串到長資料型別的轉換。簡單來說,CLng()
通常區分不同的十進位制/千位分隔符和許多取決於你計算機位置的貨幣選項。
整數資料型別可以容納數字的範圍是 -2,147,483,648 到 2,147,483,647。如果你的字串不在此範圍內,則會發生錯誤。
讓我們看一個例子並使用 CLng()
函式。在此示例中,我們將 newStr
設定為引數以將字串更改為長字串,如下所示。
# vba
Function convertToLong(newStr As Variant)
MsgBox (CLng(newStr))
End Function
Sub newFunc()
convertToLong ("15.7")
End Sub
輸出:
長資料型別與整數資料型別只有一件事不同。較大的數字在長資料型別中是可以接受的。
但是以前記憶體不夠用,不推薦使用長資料型別。
在現代,記憶不再是問題。我們可以使用 long 資料型別而不是整數。
在 VBA 中將字串轉換為單個字串
藉助以下語法,我們可以輕鬆地將字串轉換為多個單一資料型別,如下所示。
# vba
CSng(str)
我們可以使用 CSng()
函式來實現這種轉換。上面的語句中有兩個專案,CSng()
和字串。
此函式強制將字串更改為單一資料型別。
CSng()
通常用於執行國際化字串到單一資料型別的轉換。CSng()
通常區分不同的十進位制/千位分隔符和取決於計算機位置的貨幣選項。
單個資料型別可以容納浮點數的範圍是
- 當值為負時,3.402823E38 到 -1.401298E-45
- 值為正時為 1.401298E-45 至 3.402823E38
如果你的字串不在此範圍內,則會出現錯誤。如下所示,讓我們來看一個示例,其中我們將 newStr
設定為引數以將字串更改為單個字串。
# vba
Function convertToSingle(newStr As Variant)
MsgBox (CSng(newStr))
End Function
Sub newFunc()
convertToSingle ("1.3")
End Sub
輸出:
在 VBA 中將字串轉換為雙精度
藉助以下語句,我們可以輕鬆地將字串轉換為多種雙精度資料型別。該函式的語法如下所示。
# vba
CDbl(str)
建議使用 CDbl()
函式將字串更改為雙精度資料型別。此函式強制將字串更改為雙精度資料型別。
CDbl()
通常用於執行國際感知的字串轉換為雙精度資料型別。
簡而言之,CDbl()
通常區分獨特的十進位制/千位分隔符和許多取決於你計算機位置的貨幣選項。
double 資料型別可以容納浮點數的範圍如下。
- -1.79769313486231E308 到 -4.94065645841247E-324 當值為負數時。
- 當值為正時,4.94065645841247E-324 到 1.79769313486232E308。
如果我們的字串不在此範圍內,則會出現錯誤。如下所示,讓我們通過一個示例,在該示例中,我們將 newStr
設定為引數以將字串更改為雙精度。
# vba
Function convertToDouble(newStr As Variant)
MsgBox (CDbl(newStr))
End Function
Sub newFunc()
convertToDouble ("1.345")
End Sub
輸出:
在 VBA 中將字串轉換為貨幣
藉助以下語句,你可以輕鬆地將字串轉換為多種貨幣資料型別。該函式的語法如下所示。
# vba
CCur(newStr)
建議使用 CCur()
函式將字串更改為貨幣資料型別。此函式強制將字串更改為貨幣資料型別。
CCur()
通常用於執行國際通用的字串轉換為貨幣資料型別。
這意味著 CCur()
通常區分獨特的十進位制/千位分隔符和許多取決於你計算機位置的貨幣選項。貨幣資料型別可以容納 10,000 的整數。
因此,一種貨幣可以在小數點左側容納 15 個數字,在小數點右側容納 4 個數字。因此,一種貨幣可以容納數字的範圍是:
-922,337,203,685,477.5808 至 922,337,203,685,477.5807。
如果你的字串不在此範圍內,則會出現錯誤。
如下所示,讓我們來看一個示例,在該示例中,我們將 newStr
設定為引數以將字串更改為貨幣。
# vba
Function convertToCurrency(newStr As Variant)
msgBox(CCur(newStr))
End Function
在 VBA 中將字串轉換為十進位制
我們可以使用下面的語句來實現這種轉換。
# vba
CDec(newStr)
當我們的目標是將字串更改為多種十進位制資料型別時,我們可以使用 CDec()
函式。此函式強制將字串更改為 Variant 資料型別的十進位制資料子型別。
簡單來說,CDec()
將返回一個更改為 Decimal 子型別的變體。
CDec()
通常用於將字串轉換為十進位制資料型別。這意味著 CDec()
通常區分不同的十進位制/千位分隔符和許多取決於你計算機位置的貨幣選項。
十進位制資料型別可以攜帶具有 10 的可變冪的整數。冪表示可以出現在小數點右側的位數。
小數可以儲存的值的範圍如下所示。
- 當比例為 0 時,即不存在小數,範圍從 79,228,162,514,264,337,593,543,950,335 到 79,228,162,514,264,337,593,543,950,335。
- 有 28 位小數時,最大值和最小值分別為 +7.9228162514264337593543950335 和 -7.9228162514264337593543950335。
- 不包含零值的最小值是 -0.00000000000000000000000000001 和 0.0000000000000000000000000001。
如下所示,讓我們通過一個示例,其中我們將 newStr
設定為引數以將字串更改為小數。
# vba
Function convertToDecimal(newStr As Variant)
msgBox(CDec(newStr))
End Function