como gerar o número de série para cada seleção na caixa de combinação no 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

é um link para tirar o problema de vir,

paramaisdescrições

Acima,telacurtaapresentaoproblema.oquequeremosalcançaréquequandoumusuárioselecionaumvalornacoluna“A”alógicaforneceumvalorquecontémumvalorpredefinidoderivadodacoluna“B”eumnúmerodesériegeradopelosistemaapartirde“000”.

Say-Quandoousuárioselecionadacoluna“A”-PP,osistemairáobterovalorcorrespondentedacoluna“B”-210,etambémdevegerarumnúmerodesérieapartirde“000”,econcatenarovaloredevefornecer"210000" para o usuário.

Quando o usuário seleciona da coluna “A” - KK, o sistema irá obter o valor correspondente da coluna “B” - 103, e também deve gerar um número de série a partir de “000”, e concatenar o valor e deve fornecer "103000" para o usuário.

Quando novamente o usuário seleciona a coluna “A” - PP, o sistema irá obter o valor correspondente da coluna “B” - 210, e também deve gerar um número de série a partir de “001”, e concatenar o valor e fornecer “210001” para o usuário. Como o número de série "000", já está consumido.

    
por user511253 19.10.2015 / 12:22

1 resposta

0

Coloque isso no módulo 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

para gerar um número de série a partir do ID na coluna B * 1.000 ou incrementar o último ID

    
por 19.10.2015 / 23:05