У меня есть пользовательская форма, в которой пользователь может вставлять данные, а данные будут вставляться в столбцы B в M. Мне нужен код либо на рабочем листе, либо в userform для автоматического заполнения серийного номера, начинающегося с «RD 00001», который будет заполнять столбец A каждый раз, когда вводят данные. Пожалуйста, дайте мне идею.Код VBA для автоматического серийного номера в столбце A после ввода пользовательской формы в столбце B
ответ
Этот код очень прост и предназначен для запуска на чистом листе с 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
Примечание: все, что у вас есть для нахождения вашего последнего ряда для ввода других данных, убедитесь, что последняя строка и последняя строка этого субмарины являются одинаковыми.
Ive работал с кодом, который появится автоматически после того, как пользователь нажал кнопку отправки формы button.but, я не могу загрузить свой код здесь. – RayZa
Если вы поместили мой код в модуль (позвоните ему module1), то в конце кнопки button_click() в конце вставьте 'Call Module1.SerialCode'. Или вы можете поместить этот код в свой код UserForm и просто «Call SerialCode». В любом случае достигается одно и то же. – Tyeler
У меня ошибка: тип несоответствия в 'Else: lastSerial = CInt (Заменить (ws.Range ("A" и lastRow). Значение "RD", ""))' при вводе вторых данных – RayZa
См. [Когда использовать статическую переменную] (http://stackoverflow.com/documentation/vba/877/declaring-variables/16978/when-to-use-a-static-variable#t=201609070306389229598). – Comintern
_ «Мне нужен код ...» _ не работает этот сайт. Покажите свои собственные усилия и спросите о конкретной проблеме. См. [Ask] – JimHawkins
Извините за неправильное слово, которое я использовал. Должен ли я поместить свой код пользовательской формы, чтобы показать мои усилия? Я просто не знаю, как начать серийный номер part.Newbie here.Не знакомы с кодированием – RayZa