2015-08-05 5 views
0

J'ai une liste de numéros de build (par exemple R1079-AAA-001, ...- 002 etc.) dans laquelle la valeur de "R1079" change en fonction de la machine utilisée. Ce que je veux faire est de parcourir la liste pour déterminer le dernier numéro de build utilisé (les 3 derniers chiffres) par rapport à la machine spécifique que j'ai l'intention d'utiliser. Je dois ensuite en ajouter un et créer un nouveau journal pour la nouvelle construction, ie la dernière version de R1079 était 056, donc la nouvelle est 057.Dans la recherche de chaîne de nombre pour déterminer la suite dans la séquence?

Actuellement, la rubrique THEORY I est une recherche de chaîne pour le numéro de machine suivi de une recherche de numéro et stocker dans la chaîne et converti en nombre entier. Ceci est ensuite ajouté dans un tableau dynamique et le maximum trouvé lorsque la boucle est terminée. Un est ajouté à cet entier et le nouveau nom placé dans une cellule.

Cependant, le code que je possède ne fonctionne pas, donc je suppose que je manque des choses/j'ai tout faux.

code ci-dessous:

Sub test() 

Dim x As String 
Dim n As Integer 
Dim i As Integer 
Dim Machine_EBM As String 
Dim retval As String 
Dim retvalint As Integer 
Dim LastBuild As Integer 
Dim NextBuild As Integer 
Dim myarr() As Integer 

Machine = "R1079" 

x = Cells("A1").Value 'get the first string in the list 
    n = 1 
    Do Until x = "" 
     If InStr(x, Machine) > 0 Then 'search for machine in string 
      For i = 6 To Len(Str) 'search for numbers at end of string 
       If Mid(x, i, 1) >= "0" And Mid(x, i, 1) <= "9" Then 
        retval = retval + Mid(s, i, 1) 'store numbers 
       End If 
      Next i 
      retvalint = CInt(retval) ' convert to integer 
      ReDim Preserve myarr(n) 
      myarr(n) = retvalint ' store integer value in array 
      n = n + 1 
     End If 
    Loop 

    LastBuild = Worksheet.Function.Max(myarr(n)) ' determine maximum array value 
    NewBuild = LastBuild + 1 'add one to the value 

    Range("C1").Select 
    ActiveCell = Machine = "-AAA-" + NewBuild 'input new build number 

End Sub 

Je suis assez nouveau pour VBA et autodidacte je me rends compte donc il peut y avoir beaucoup d'erreurs ici que je suis absent. Toute aide est appréciée!

Merci,

Charlie

+0

Dites, comment stocker votre code de construction dans votre feuille Excel. Je veux dire, quelle gamme ou quelle colonne. Donc, je peux donner plus. –

Répondre

1

Voici un petit morceau de code pour obtenir une nouvelle construction non pour construire aucune entrée.

J'ai déjà testé le code. Cela me donne une bonne réponse. Donc, vous pouvez utiliser ce code.

Public Sub getBuildNo() 

    Dim machineCode, lastBuildCode, newBuildCode As String 
    Dim buildNo As Integer 

    'Set machine code 
    machineCode = "R1079" 

    'Set last build code 
    lastBuildCode = Range("A1") 

    'Get last build no 
    buildNo = Right(lastBuildCode, 3) 

    'Increase 1 
    buildNo = buildNo + 1 

    'Get new build No 
    newBuildCode = machineCode & "-AAA-" 

    'adding prefix 0s for getting like (001, 002, 025, etc.) 
    If buildNo < 10 Then 
     newBuildCode = newBuildCode & "00" & buildNo 
    ElseIf buildNo < 100 Then 
     newBuildCode = newBuildCode & "0" & buildNo 
    Else 
     newBuildCode = newBuildCode & buildNo 
    End If 

    'show new code 
    Range("C1") = newBuildCode 

End Sub