Incrementar código en combobox y que se vayan insertando en hoja de Excel con formulario

Recurriendo a su experticia me gustaría realizar un código que se vaya incrementando de manera automática de acuerdo a unos items que se cargan en el combobox por ejemplo selecciono un item (FRU-OO0) al registrar los datos este item quede como (FRU-OO1) y asi sucesivamente, pero si selecciono de este mismo combobox otro item (VER-000) este realice la mismo función sin duplicar datos al hora de hacer nuevos registros.

Range("A31").EntireRow.Insert
'Range("A31").Value = Me.ComboBox1.Value
Range("B31").Value = Me.txtpro.Value
Range("C31").Value = Me.txttipopro.Value
Range("D31").Value = Me.txtprove.Value
Range("E31").Value = Me.txtprecio1.Value
Range("F31").Value = Me.txtprecio2.Value
' If ComboBox1 = Empty Then
'MsgBox ("Se requiere que seleccione un nombre para insertar un codigo"), vbCritical, "AVISO"
'ComboBox1.SetFocus
'Exit Sub
'End If
''Sheets("Hoja11").Cells(31, 1) = ComboBox1

'
''Unload Me
'Sheets("Hoja11").Select

1 Respuesta

Respuesta
1

De acuerdo a unos items que se cargan en el combobox

¿Cómo se llama el combobox, es el combobox1 de tu código?

¿En cuál columna almacenas el item, es la columna "A" de tu código?

¿El "item" siempre lleva letras al principio, después un guión "-" y por último 3 ceros, ejemplo: "FRU-000"?


Si lo anterior es correcto, entonces utiliza lo siguiente:

Private Sub CommandButton1_Click()
  'Declaración de variables
  Dim a As Variant
  Dim lr As Long, i As Long, fin As Long, cont As Long, n As Long
  Dim pre As String
  '
  'Validaciones
  If ComboBox1 = "" Or ComboBox1.ListIndex = -1 Then
    MsgBox ("Se requiere que seleccione un nombre para insertar un codigo"), vbCritical, "AVISO"
    ComboBox1.SetFocus
    Exit Sub
  End If
  If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False
  '
  'Proceso
  lr = Range("A" & Rows.Count).End(3).Row + 2
  a = Range("A31:A" & lr)
  Select Case lr
    Case Is < 31: fin = 0
    Case 31:      fin = 1
    Case Else:    fin = UBound(a)
  End Select
  n = 1
  pre = Split(ComboBox1.Value, "-")(0)
  For i = 1 To fin
    If Left(a(i, 1), Len(pre)) = pre Then
      n = n + 1
    End If
  Next
  '
  'Salida
  Application.ScreenUpdating = False
  Range("A31").EntireRow.Insert
  Range("A31").Value = pre & "-" & Format(n, "000")
  Range("B31").Value = Me.txtpro.Value
  Range("C31").Value = Me.txttipopro.Value
  Range("D31").Value = Me.txtprove.Value
  Range("E31").Value = Me.txtprecio1.Value
  Range("F31").Value = Me.txtprecio2.Value
  Application.ScreenUpdating = True
End Sub

¡Gracias! siiiii es exactamente lo requerido disculpando la demora!.. pero en mi proceso de aprendizaje tomo línea a línea y la estudio para sacar una lógica muchas gracias maestro!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas