0
votes

Excel VBA: numéro d'identification d'incrément automatique à l'intérieur du texte

J'ai ici le code d'échantillon de la manière dont le numéro d'identification d'auto-incrément automatique et la sortie d'échantillon du programme

 Entrez la description de l'image ici xxx < P> Comme vous pouvez le constater, j'ai 3 champs différents. ID, date limite, soumise

Chaque fois que j'entre un nouvel enregistrement pour la date limite et le champ Soumis, l'ID devrait automatiquement augmenter en fonction de la dernière carte d'identité insérée.

Comme vous le constatez, le premier identifiant est ABC-001 et il saute soudainement dans ABC-003 au lieu d'ABC-002.

Comme je suppose que c'est peut-être la raison, il suit la rangée des données qui sont pourquoi, après ABC-001, il apparaît comme ABC-003 Parce que ce numéro d'identification est la rangée n ° 3

y a-t-il un moyen d'obtenir le dernier identifiant inséré et d'être une base pour générer un nouvel identifiant?


0 commentaires

3 Réponses :


0
votes

Changer xxx

à xxx


0 commentaires

1
votes

C'est ainsi que je vais programmer cette tâche: prenez simplement la dernière utilisation et ajoutez 1.

Sub AddData()

    Dim Ws As Worksheet
    Dim AbcID As Range
    Dim Deadline As Range
    Dim Submitted As Range
    Dim AbcNum As Integer

    Set Ws = ThisWorkbook.Worksheets("Sheet3")          'define worksheet
    With Ws
        Set AbcID = .Cells(.Rows.Count, "A").End(xlUp)  'last used
        Set Deadline = .Range("H1")                     'define deadline cell
        Set Submitted = .Range("H3")                    'define submitted cell
    End With

    With AbcID
        If .Row > 1 Then AbcNum = Val(.Value)
        Set AbcID = .Offset(1)
    End With

    With AbcID
        .Value = AbcNum + 1
        .NumberFormat = """ABC""" & "-000"
        .Offset(0, 1).Value = Deadline.Value
        .Offset(0, 2).Value = Submitted.Value
    End With
End Sub


0 commentaires

0
votes

La première réponse était un téléphone portable. Votre "nrow" est le numéro d'origine plus un. Vous devez donc soustraire 1 à nouveau. Pour les résultats corrects, vous devez définir le chiffre sur 3 chiffres. Si vous avez plus de 10 ans et plus de 100 ans, vous pouvez dire la différence. Il suffit de concaténer que les caractères (00 et 1) entraîneront des résultats différents plus tard.

ws.Cells(nRow, "A").Value = "ABC-" & Format(nRow - 1, "000")


0 commentaires