分解特殊字符:“123456789012345678-80/95”-易勋
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


分解特殊字符:“123456789012345678-80/95”

发表时间:2017/8/3 14:56:22 评论(1) 浏览(5009)  评论 | 加入收藏 | 复制
   
摘 要:分解特殊字符:“123456789012345678-80/95”
123456789012345678
123456789012345679
123456789012345680
123456789012345695
正 文:
函数:
Public Function SplitInCo(strChar As String) As String
    Dim strInvoiceNumber As String
    Dim strInvoiceCode As String
    Dim intS As Integer
    Dim intLen As Integer
    Dim inti As Integer
    Dim strInv As String
    Dim strTemp As String
    Dim strType As String
    Dim arrInvoice() As String
    Dim intArr As Integer
    Dim strInvoice As String
    Dim lngInv As Long
    Dim strFormat As String
    intLen = Len(strChar)
    
    Select Case intLen
    Case Is < 18
        SplitInCo = ""
    Case Is = 18
        If Not strChar Like "*-*" And Not strChar Like "/" Then
            SplitInCo = strChar
            strInvoiceCode = Left(strChar, 10)
            strInvoiceNumber = Right(strChar, 8)
        Else
            SplitInCo = ""
        End If
    Case 19
        SplitInCo = ""
    Case Is > 19
        If Mid(strChar, 19, 1) = "-" or Mid(strChar, 19, 1) = "/" Then
            strInvoice = Left(strChar, 18)
            intArr = 0
            inti = 0
            strType = Mid(strChar, 19, 1)
            
            For intS = 20 To intLen
                strTemp = Mid(strChar, intS, 1)
                strInv = strInv & strTemp
                If strTemp = "-" or strTemp = "/" or intS = intLen Then
                    If intS <> intLen Then
                        strInv = Left(strInv, Len(strInv) - 1)
                    End If
                    
                    Select Case strType
                    Case "-"
                        For inti = 1 To Len(strInv)
                            strFormat = strFormat & "0"
                        Next
                        If Val(Right(Split(strInvoice, "|")(intArr), Len(strInv))) < Val(strInv) Then
                            For lngInv = Val(Right(Split(strInvoice, "|")(intArr), Len(strInv))) + 1 To Val(strInv)
                                strInvoice = strInvoice & "|" & Left((Split(strInvoice, "|")(intArr)), 18 - Len(strInv)) & Format(lngInv, strFormat)
                                intArr = intArr + 1
                            Next
                        End If
                        strFormat = ""
                    Case "/"
                        If Len(strInv) <= 8 Then
                            strInvoice = strInvoice & "|" & Left((Split(strInvoice, "|")(intArr)), 18 - Len(strInv)) & strInv
                            intArr = intArr + 1
                        Else
                            strInvoice = strInvoice & "|" & strInv
                            intArr = intArr + 1
                        End If
'                    Case Else
'                        strInvoice = strInvoice & "|Error"
                    End Select
                    strInv = ""
                    strType = strTemp
                End If
            Next
            SplitInCo = intArr + 1
            SplitInCo = strInvoice
        Else
            SplitInCo = ""
        End If
    End Select
    

End Function
用法:
SplitInCo("123456789012345678-80/95")

Access软件网交流QQ群(群号:198465573)
 
 相关文章
[access查询]提取字段中特殊字符的几种方式  【十段  2008/4/19】
使用access时必须避免的特殊字符  【82077802  2009/6/26】
【access小品】钓鱼执法---文本分解为记录实例  【todaynew  2010/6/21】
【access小品】字符串分解--instr与mid函数运用示例  【煮江品茶  2011/10/18】
【Access小品】吃货--数据分解导入  【煮江品茶  2014/2/9】
【Access小品】分解问题--删除空文件夹示例  【煮江品茶  2014/7/1】
分解行vba  【欢乐小爪  2014/11/27】
常见问答
技术分类
相关资源
文章搜索
关于作者

易勋

文章分类

文章存档

友情链接