H o l a : Lo que hice alguna vez, es solicitar el número, entonces en una fila vacía se pone un número consecutivo, ese número consecutivo puede ser el número de solicitud, ese número se entrega al solicitante (usuario 1), se almacena en la fila vacía y se guarda el archivo.
Si otro usuario (usuario 2), va a generar una solicitud, primero tiene que solicitar el número de solicitud.
Mientras el usuario 1, continua con su proceso de capturar la solicitud, cuando quiera registrar la solicitud, lo que tiene que hacer la macro es buscar el número de solicitud y entonces en esa fila ingresar los datos.
Te anexo los códigos:
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
'Abre el archivo que contiene las solicitudes
ruta = Range("E1") '"\\Damor\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
'registra en la nueva fila el nuevo número de solicitud
h2.Range("A" & f + 1) = nvo
Application.DisplayAlerts = False
'guarda y cierra el libro de solicitudes
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 = Range("E1") 'ruta = "\\Damor\Blog\"
'Abre archivo de solicitudes
arch = "libro a.xlsm"
Set l2 = Workbooks.Open(ruta & arch, , False)
Set h2 = l2.Sheets(1)
l1.Activate
'Buscar solicitud
Set b = h2.Range("A:A").Find(Val(Label1.Caption))
If Not b Is Nothing Then
'guarda datos de solicitud
h2.Cells(b.Row, "B") = TextBox1
h2.Cells(b.Row, "C") = TextBox2
End If
'guarda y cierra el libro de solicitudes
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 = Range("E1") ' ruta = "\\Damor\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
Trata de adaptarlo a tu formulario.
Sal u dos