Te regreso el código con lo siguiente:
- Actualicé la fórmula de name1, para que se actualice en automático el rango.
=DESREF(basedatos!$B$2, , , CONTARA(basedatos!$B:$B)-1,1)
- En el userorm, quité la propiedad Rowsource del combobox1.
- Ahora los nombres son cargados con el método AddItem
- Los nombres se cargan en el combo y son ordenados alfabéticamente con la rutina Agregar.
- Actualicé el código para Guardar Datos
- Después de crear un registro, el combo es cargado nuevamente.
- También el name1 se actualiza automáticamente.
- Al principio de todo el código declaré la variable h, para establecer la hoja "basedatos"
- Creé el evento UserForm_Activate, para establecer la hoja en el objeto h y para cargar los nombres en el combo.
Private Sub UserForm_Activate()
'Por Dante Amor
'carga combo
Set h = Sheets("basedatos")
Dim i
For i = 2 To h.Range("B" & Rows.Count).End(xlUp).Row
Call Agregar(ComboBox1, h.Cells(i, "B").Value)
Next
End Sub
'
Sub Agregar(combo As ComboBox, dato As String)
'por.DAM agrega los item únicos y en orden alfabético
Dim i
For i = 0 To combo.ListCount - 1
Select Case StrComp(combo.List(i), dato, vbTextCompare)
Case 0: Exit Sub 'ya existe en el combo y ya no lo agrega
Case 1: combo.AddItem dato, i: Exit Sub 'Es menor, lo agrega antes del comparado
End Select
Next
combo.AddItem dato 'Es mayor lo agrega al final
End Sub
Dim h As Object
Dim rpta As String
Dim Swiche As Integer
'Dim consecutivo As Integer
'
Private Sub btnguardar_Click()
'Guardar datos
'
Dim u
u = h.Range("B" & Rows.Count).End(xlUp).Row + 1
h.Range("A" & u).Value = txtcod.Value
h.Range("B" & u).Value = ComboBox1.Value
h.Range("C" & u).Value = txtcontacto.Value
h.Range("D" & u).Value = txtdireccion.Value
h.Range("E" & u).Value = txtfijo.Value
h.Range("F" & u).Value = txtcel.Value
h.Range("G" & u).Value = txtemail.Value
h.Range("H" & u).Value = lblsaldo.Caption
h.Range("I" & u).Value = txtestado.Value
h.Range("J" & u).Value = txtnit.Value
h.Range("K" & u).Value = txttipo.Value
'
Dim i
ComboBox1.Clear
For i = 2 To h.Range("B" & Rows.Count).End(xlUp).Row
Call Agregar(ComboBox1, h.Cells(i, "B").Value)
Next
'
MsgBox "Los datos se almacenaron con éxito", vbOKOnly, "Felicitaciones"
txtcontacto.Text = ""
txtdireccion.Text = ""
txtfijo.Text = ""
txtcel.Text = ""
txtemail.Text = ""
lblsaldo.Caption = " "
txtestado.Text = " "
txtnit.Text = " "
txtcod.Text = " "
txttipo.Text = " "
ComboBox1.SetFocus
End Sub
.
.Sal u dos. Dante Amor. No olvides valorar las respuestas. G raci as
.
Dante eres un Pro - Adriel Ortiz Mangia