在 VBA 中將字串轉換為數字

Iqra Hasnain 2022年5月26日
在 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 中將字串轉換為整數

藉助以下語句,你可以輕鬆地將字串轉換為整數資料型別的數字。該函式的語法如下所示。

# 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 中將字串轉換為數字作為 int

在 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

輸出:

在 VBA 中將字串轉換為數字

長資料型別與整數資料型別只有一件事不同。較大的數字在長資料型別中是可以接受的。

但是以前記憶體不夠用,不推薦使用長資料型別。

在現代,記憶不再是問題。我們可以使用 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 中將字串轉換為雙精度

藉助以下語句,我們可以輕鬆地將字串轉換為多種雙精度資料型別。該函式的語法如下所示。

# 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 中將字串轉換為數字作為 double

在 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

相關文章 - VBA String