2016-09-07 4 views
-3

У меня есть пользовательская форма, в которой пользователь может вставлять данные, а данные будут вставляться в столбцы B в M. Мне нужен код либо на рабочем листе, либо в userform для автоматического заполнения серийного номера, начинающегося с «RD 00001», который будет заполнять столбец A каждый раз, когда вводят данные. Пожалуйста, дайте мне идею.Код VBA для автоматического серийного номера в столбце A после ввода пользовательской формы в столбце B

+0

См. [Когда использовать статическую переменную] (http://stackoverflow.com/documentation/vba/877/declaring-variables/16978/when-to-use-a-static-variable#t=201609070306389229598). – Comintern

+0

_ «Мне нужен код ...» _ не работает этот сайт. Покажите свои собственные усилия и спросите о конкретной проблеме. См. [Ask] – JimHawkins

+0

Извините за неправильное слово, которое я использовал. Должен ли я поместить свой код пользовательской формы, чтобы показать мои усилия? Я просто не знаю, как начать серийный номер part.Newbie here.Не знакомы с кодированием – RayZa

ответ

0

Этот код очень прост и предназначен для запуска на чистом листе с Row 1, являющимся вашей строкой заголовка. Это динамично, так что подключи и играй. Просто позвоните на юг с любым кодом, который у вас есть для ввода других данных.

Sub SerialCode() 
    Dim ws As Worksheet 
    Dim lastSerial, digits, i As Integer 
    Dim nextRow, lastRow As Long 
    Dim newSerial As String 

    Set ws = ThisWorkbook.Sheets(1) 
    nextRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1 'Finds the last row in A 
    lastRow = nextRow - 1 
    newSerial = "" 'set value of our string blank 

    If (nextRow - 1) < 2 Then 'If statement to catch if there's only a header 
     lastSerial = 0 
    Else: lastSerial = CInt(Replace(ws.Range("A" & lastRow).Value, "RD ", "")) 
    End If 

    lastSerial = lastSerial + 1 
    digits = 6 - Len(lastSerial) 'how many 0's are there 

    For i = 1 To digits 
     newSerial = newSerial & "0" 'start building the string with 0's 
    Next i 

    newSerial = "RD " & newSerial & lastSerial 'concatenate the serial code 
    ws.Range("A" & nextRow).Value = newSerial 
End Sub 

Примечание: все, что у вас есть для нахождения вашего последнего ряда для ввода других данных, убедитесь, что последняя строка и последняя строка этого субмарины являются одинаковыми.

+0

Ive работал с кодом, который появится автоматически после того, как пользователь нажал кнопку отправки формы button.but, я не могу загрузить свой код здесь. – RayZa

+0

Если вы поместили мой код в модуль (позвоните ему module1), то в конце кнопки button_click() в конце вставьте 'Call Module1.SerialCode'. Или вы можете поместить этот код в свой код UserForm и просто «Call SerialCode». В любом случае достигается одно и то же. – Tyeler

+0

У меня ошибка: тип несоответствия в 'Else: lastSerial = CInt (Заменить (ws.Range ("A" и lastRow). Значение "RD", ""))' при вводе вторых данных – RayZa

Смежные вопросы