H o l a:
Hace tiempo hice algo similar. La idea es que en un libro1, tengas una aplicación para registrar los datos utilizando un userform. En un libro2, deberás tener la base de datos, es decir, en el libro2 se pondrá el número consecutivo y se registrarán las "ordenes de servicio".
El userform va a controlar el consecutivo, cada que un usuario abra el userform, deberá solicitar un número consecutivo, el userform le entregará el siguiente disponible. Si otro usuario solicita otro consecutivo, el userform entregará el siguiente disponible, claro, considerando el consecutivo anteriormente entregado.
El usuario captura su requerimiento y guarda.
Te anexo las macros para obtener el consecutivo, guardar y cancelar un consecutivo:
Private Sub CommandButton1_Click()
'Por.Dante Amor
'
'Obtener número
If Label1 <> "" Then
MsgBox "Ya tienes un número, no puedes obtener otro", vbCritical, "TICKETS"
Exit Sub
End If
Application.ScreenUpdating = False
Set l1 = ThisWorkbook
ruta = "\\Damor2\Blog\"
arch = "libro a.xlsm"
Set l2 = Workbooks.Open(ruta & arch, , False)
Set h2 = l2.Sheets(1)
l1.Activate
act = h2.Range("A" & l2.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row)
f = h2.Range("A" & Rows.Count).End(xlUp).Row
nvo = act + 1
Label1.Caption = nvo
h2.Range("A" & f + 1) = nvo
Application.DisplayAlerts = False
l2.Save
l2.Close
End Sub
'
Private Sub CommandButton2_Click()
'Por.Dante Amor
'
'Guardar
Application.ScreenUpdating = False
If Label1.Caption = "" Then
MsgBox "Primero debes obtener un número", vbCritical, "TICKETS"
Exit Sub
End If
If TextBox1 = "" Then
MsgBox "Captura un problema", vbCritical, "TICKETS"
Exit Sub
End If
Set l1 = ThisWorkbook
ruta = "\\Damor2\Blog\"
arch = "libro a.xlsm"
Set l2 = Workbooks.Open(ruta & arch, , False)
Set h2 = l2.Sheets(1)
l1.Activate
Set b = h2.Range("A:A").Find(Val(Label1.Caption))
If Not b Is Nothing Then
h2.Cells(b.Row, "B") = TextBox1
h2.Cells(b.Row, "C") = TextBox2
End If
l2.Save
l2.Close
limpiar
MsgBox "Datos guardados", vbInformation, "TICKETS"
End Sub
'
Private Sub CommandButton3_Click()
'Por.Dante Amor
'
'Cancelar
Application.ScreenUpdating = False
If Label1.Caption = "" Then
MsgBox "Primero debes obtener un número", vbCritical, "TICKETS"
Exit Sub
End If
Set l1 = ThisWorkbook
ruta = "\\Damor2\Blog\"
arch = "libro a.xlsm"
Set l2 = Workbooks.Open(ruta & arch, , False)
Set h2 = l2.Sheets(1)
l1.Activate
Set b = h2.Range("A:A").Find(Val(Label1.Caption))
If Not b Is Nothing Then
h2.Cells(b.Row, "B") = "Cancelado"
End If
l2.Save
l2.Close
limpiar
End Sub
'
Private Sub CommandButton4_Click()
'Por.Dante Amor
'Salir
Unload Me
End Sub
'
Private Sub UserForm_Activate()
'Por.Dante Amor
'Cargar datos iniciales
Label6.Caption = Application.UserName
Label7.Caption = Date
End Sub
'
Sub limpiar()
'Por.Dante Amor
Label1.Caption = ""
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
End Sub
El formulario debe tener los siguientes controles:
Avísame cualquier cambio que necesites.
':)
S a l u d o s . D a n t e A m o r
':) Si es lo que necesitas. Recuerda valorar la respuesta. G r a c i a s.