Код VBA для автоматического серийного номера в столбце A при вводе данных в пользовательской форме - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть пользовательская форма, в которой пользователь может заполнить данные, и данные будут вставлены в столбцы с C по Z. Мне нужен код, либо в рабочей таблице, либо в пользовательской форме для автоматического заполнения серийного номера, начинающегося с BA00860, который заполнит столбецВ каждый раз вводятся данные.

Я пытался с помощью приведенного ниже кода под Commandbutton_Click Я смог сгенерировать серийные номера от BA00860 до BA00869, затем после того, как он начинается с BA01861, но неBA00870.Пожалуйста, исправьте мой код так, как мне требуется: BA00860BA00870BA00880 и т. Д.

Me.txtId.Value = "BA" & Format(Application.Max(Sheets("Tasks").Range("A12:A65536")) + 1, "00860")

ActiveCell.Offset(0, 0).Value = Me.txtId.Value

ActiveCell.Offset(0, 0).NumberFormat = "00860"

1 Ответ

0 голосов
/ 06 февраля 2019

Обратите внимание, что этот .NumberFormat = "00860" не является допустимым числовым форматом.

Вы можете легко сделать это с помощью формулы.Предположим, что ваш первый серийный номер написан в формате А1, как…

enter image description here

Затем вы можете просто использовать формулу =LEFT(A1,2) & TEXT(RIGHT(A1,5)+1,"00000") в ячейке A2 и скопировать ее вполучить следующее:

enter image description here

В VBA вы можете использовать что-то вроде

Dim LastSN As String
LastSN = Range("A1").Value 'eg BA00860

Dim NextSN As String
NextSN = Left$(LastSN, 2) & Format$(Right(LastSN, 5) + 1, "00000")

Полный пример по комментариям:

Sub Test()
    Dim LastSN As String
    LastSN = "BA00860"

    Dim NextSN As String
    NextSN = Left$(LastSN, 2) & Format$(Right(LastSN, 5) + 1, "00000")

    MsgBox "LastSN was: " & LastSN & vbCrLf & "NextSN is: " & NextSN
End Sub
...