як генерувати серійний номер для кожного виділення у списку в excel vba


0
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

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

Над коротким екраном представлено проблему. ми хочемо досягти того, що коли користувач вибирає значення в колонці «А», логіка надає значення, яке містить заздалегідь визначене значення, отримане з стовпця «В», і система, що генерує серійний номер, починаючи з «000».

Скажіть - Коли користувач вибирає з стовпчика «А» - ПП, система отримає відповідне значення з стовпця «В» - 210, а також повинна генерувати серійний номер, починаючи з «000», і об'єднати значення і забезпечити «210000». »Для користувача.

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

Коли користувач знову вибирає колонку «А» - ПП, система отримає відповідне значення з стовпця «В» - 210, а також повинна генерувати серійний номер, починаючи з «001», і об'єднати значення і забезпечити «210001» для користувача. Як серійний номер «000», вже споживається.

Відповіді:


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, або збільшувати останній ідентифікатор


введіть опис зображення тут

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.