Private Sub CommandButton1_Click()

    With ComboBox1.Value
        Dim a, b As String
        Dim i, j, k, l, x, q, m, temp As Long
        a = ComboBox1.Text
        i = Application.WorksheetFunction.Match(a, Range("A1:A1000"), 0)
        j = Cells(i, 2)
        l = j * 1000
        For q = 2 To 100
            For m = 2 To 100
                If Cells(q, m).Value < 0 Then
                    k = m
                End If
            Next
        Next
        x = l
        If Cells(i, GC).Value = temp Then
            Click = Click + 1
        Else
            Click = 0
        End If
        Cells(i, GC) = x + Click
        TextBox1.Text = x + Click
        temp = Cells(i, GC).Value
    End With
    GC = GC + 1

это ссылка на то, что проблема в том, чтобы прийти,

https://plus.google.com/100336580781932243792/posts/VHb18Hv6pTt?pid=6207264542909974946&oid=100336580781932243792

для большего описания

Выше короткого экрана представляет проблему. мы хотим добиться того, чтобы, когда пользователь выбирал значение в столбце «A», логика предоставляла значение, которое содержит предварительно определенное значение, полученное из столбца «B», и серийный номер, сгенерированный системой, начиная с «000».

Скажем - когда пользователь выбирает из столбца «A» - PP, система получит соответствующее значение из столбца «B» - 210, а также должна сгенерировать серийный номер, начиная с «000», и объединить значение и предоставить «210000 Для пользователя.

Когда пользователь выбирает из столбца «A» - KK, система получит соответствующее значение из столбца «B» - 103, а также должна сгенерировать серийный номер, начиная с «000», и объединить значение и предоставить «103000». Для пользователя.

Когда пользователь снова выбирает столбец «A» - PP, система получит соответствующее значение из столбца «B» - 210, а также должна сгенерировать серийный номер, начиная с «001», и объединить значение и предоставить «210001» для пользователя. Так как серийный номер ”000” уже используется.

1 ответ1

0

Поместите это в модуль UserForm1

Option Explicit

Private ur As Range

Private Sub CommandButton1_Click()
    Dim c As Range, co As Range

    Set c = getLastID
    Set co = c.Offset(, -1)

    If Len(co) > 0 Then c = co + 1 Else c = ur.Cells(c.Row, 2) * 1000
    Me.TextBox1.Text = c
End Sub

Private Sub ComboBox1_Change()
    Me.TextBox1.Text = getLastID.Offset(, -1)
End Sub

Private Function getLastID() As Range
    Dim sel As String, lc As Long, cr As Long

    sel = Me.ComboBox1.Text
    If Len(sel) = 0 Then sel = ur.Cells(ur.Row + ur.Rows.Count, 1)

    cr = Application.WorksheetFunction.Match(sel, ur.Columns(1), 0)
    lc = ur.Cells(cr, ur.Column + ur.Columns.Count + 1).End(xlToLeft).Column

    If lc < 5 Then lc = lc + 2
    Set getLastID = ur.Cells(cr, lc + 1)
End Function

Private Sub UserForm_Initialize()
    Set ur = Worksheets(1).UsedRange
End Sub

создать серийный номер, начиная с идентификатора в столбце B * 1000, или увеличить последний идентификатор


Всё ещё ищете ответ? Посмотрите другие вопросы с метками .