在 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