使用VBA从String获取Integer值

时间:2012-10-13 05:51:54

标签: vba

我正在尝试使用QTP和SAP自动化脚本。

在SAP中,生成订单时,状态栏中的凭证编号为“在编号4500290636下创建的标准采购订单

我的挑战是如何将take string转换为Integer值。

3 个答案:

答案 0 :(得分:1)

由于您使用的是SAP,我认为可以安全地假设文档编号的长度始终为10个字符。因此,您可以使用Right函数提取它,然后使用Val进行转换。像这样:

yourInteger = Val(Right(yourSAPString, 10))

注意:在.net中,您可以使用Convert.ToInt32而不是Val

答案 1 :(得分:1)

您可以使用拆分功能:

Dim strSplit As Variant
Dim yourNumericOut As Variant

    strSplit = Split("Standard PO created under the number 4500290636")

    If IsNumeric(UBound(strSplit)) Then yourNumericOut = --strSplit(UBound(strSplit))

然后测试数字,将允许多个长度,并可以更改返回值中的数字的位置。

答案 2 :(得分:0)

我建议使用自定义功能。

功能如下:

Public Function ExtractNumber(fromString As String) As Double
    Dim RegEx As Object
    Set RegEx = CreateObject("VBScript.RegExp")
    With RegEx
        .Pattern = "(\d{1,3},?)+(\.\d{2})?"
        .Global = True
        If .Test(fromString) Then
            ExtractNumber = CDbl(.Execute(fromString)(0))
        End If
    End With
End Function

这是用法示例:

Sub Example()
    Debug.Print ExtractNumber("Standard PO created under the number 4500290636")
End Sub

此代码来自类似的,最新的答案,具有更好的解决方案。看这里: Excel VBA - Extract numeric value in string