在 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