2015-08-05 4 views
0

У меня есть список номеров сборки (например, R1079-AAA-001, ...- 002 и т. Д.), В которых значение «R1079» изменяется в зависимости от используемого аппарата. Я хочу выполнить поиск по списку, чтобы определить последний использованный номер сборки (последние 3 цифры) в отношении конкретной машины, которую я намерен использовать. Затем мне нужно добавить его и создать новый журнал для новой сборки, т. Е. Последняя сборка R1079 составляла 056, поэтому новый - 057.В строке поиска номера для определения следующего в последовательности?

В настоящее время ТЕОРИЯ У меня есть строковый поиск номера машины, за которым следует поиск и сохранение номера в строке и преобразование в целое. Затем он добавляется в динамический массив, и максимум определяется, когда цикл завершен. Один добавляется к этому целому числу, а новое имя помещается в ячейку.

Однако код, который у меня есть, не работает, поэтому я предполагаю, что упускаю вещи/получил все неправильно.

код ниже:

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 

Я довольно новыми для VBA и самоучка, так что я понимаю, что может быть много ошибок здесь, что мне не хватает. Любая помощь приветствуется!

Спасибо,

Чарли

+0

Скажите, как сохранить код сборки в вашем листе excel. Я имею в виду, какой диапазон или какой столбец. Итак, я могу дать больше. –

ответ

1

Вот небольшой фрагмент коды для получения новой сборки не для введенной сборки нет.

Я уже проверил код. Это дает мне правильный ответ. Таким образом, вы можете использовать этот код.

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