1 votes

Comment développer des nombres intermédiaires en VBA ?

J'ai besoin d'étendre Certains numéros de l'un à l'autre

Comme lorsque l'entrée est 399207 et 10 = Sortie 399207 399208 399209 399210

Entrée :

422209           10
904L1009         10
356608           11
0003ML00030-1    3
00EO0632         33
00SH0062         65
0177-5002        3
01RLCB0082901001 3
02AE0078         81
02ID0081         82
0301ME001218-1   3
07HY0569         71
327798           800
336999           7000

Actuellement, j'utilise une sous-fonction définie par l'utilisateur pour ce processus.

Voici mon code

Function EXPAND_serial(pno As String, n As String, _
                       Optional delim As String = "@")

    Dim m As String, i As Long, pnos As Variant

    m = Right(pno, Len(n))
    pno = Left(pno, Len(pno) - Len(n))
    ReDim pnos((m) To (n))

    For i = (m) To (n)
        pnos(i) = pno & (i)
    Next i

    EXPAND_serial = Join(pnos, delim)

End Function

Lorsque j'utilise ce code, il fonctionne bien (01 à 09) pour les numéros principaux, mais si je croise 09 à 10 ou plus, il ne fonctionne pas.

Il saute les 0 Ainsi, le chiffre d'entrée ne correspond pas à la longueur de chaque chiffre de sortie si des 0 sont présents.

Voir mon Snap pour une meilleure compréhension. Comment réparer cela, aidez-moi

Le fond rouge clair met en évidence le problème

enter image description here

1voto

Edu Garcia Points 107

Cela semble très simple, veuillez corriger si je me trompe, en utilisant la fonction String(Number, Character) vous pouvez le faire faire. Vous pouvez en savoir plus sur cette fonction ici .

Function EXPAND_serial(pno As String, n As String, _
                       Optional delim As String = "@")

    Dim m As String, i As Long, pnos As String

    m = Right(pno, Len(n))
    pno = Left(pno, Len(pno) - Len(n))
    ReDim pnos(m To n)

    For i = m To n
        pnos(i) = pno & String(Len(n) - Len(CStr(i)), "0") & i
    Next i

    EXPAND_serial = Join(pnos, delim)

End Function

P.S. : J'ai supprimé les parenthèses supplémentaires pour rendre le code plus lisible.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X