Error al actualizar automáticamente listbox

Para James Bond: Buenos días antes que nada agradecer por la ayuda que nos dan bueno mi problema es el siguiente : tu me enviaste una macro que es esta:

Private Sub CommandButton1_Click()
Set datos = Range("a1").CurrentRegion
With datos
    ultimo = .Columns(2).Rows.End(xlDown)
    separa = Split(ultimo, "-")
    numero = WorksheetFunction.Text(Val(separa(0)) + 1, "0000")
    an = Right(Year(Date), 2)
    TextBox1.Text = numero & "-" & an
    cuenta = WorksheetFunction.CountA(.Columns(2))
    .Cells(cuenta + 1, 2) = TextBox1.Text
End With
End Sub

para poder generar números de notificación automáticos que estuvo muy buena a esa macro yo le aumente algunas cosas mas para poder generar un id automático  y a la vez que se actualice en un listbox cada vez que ingreso 1 nuevo registro el problema es que el primero que hice me funciono a la perfección pero ahora los que estoy haciendo me lanzan error y no se porque acá te muestro el formulario y lo que hice:

Private Sub CommandButton1_Click()
Set datos = Range("a1").CurrentRegion
If ComboBox1.Value = "" Then
MsgBox "Debe ingresar el POLICIA_MUNICIPAL", vbInformation, "MENSAJE"
Else
Set h2 = Sheets("NOTIFICACIONES")
UltimaFila = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
UltimaFil = h2.Range("A" & Rows.Count).End(xlUp).Row
With datos
ultima = .Columns(1).Rows.End(xlDown)
ultimo = .Columns(2).Rows.End(xlDown)
separa = Split(ultimo, "-")
numero = WorksheetFunction.Text(Val(separa(0)) + 1, "0000")
an = Right(Year(Date), 2)
TextBox2.Text = numero & "-" & an
TextBox1.Text = UltimaFil
cuenta = WorksheetFunction.CountA(.Columns(2))
.Cells(cuenta + 1, 2) = TextBox2.Text
h2.Cells(UltimaFila, 1) = Application.WorksheetFunction.Max(h2.Range("A:A")) + 1
h2.Cells(cuenta + 1, 2) = TextBox2.Text
h2.Cells(UltimaFila, 3) = ComboBox1.Value
h2.Cells(UltimaFila, 4) = CDate(TextBox3.Value)
h2.Cells(UltimaFila, 5) = CDate(TextBox4.Value)
End With
End If
End Sub

Private Sub UserForm_Initialize()

TextBox3 = DateValue(Now)
TextBox4 = Format(Now, "hh:mm")
Sheets("NOTIFICACIONES").Select
ListBox1.RowSource = ""
ListBox1.RowSource = ("A2:E" & Cells(Rows.Count, 1).End(xlUp).Row)

End Sub

Ahora te quiero pedirte por favor si me puedes indicar porque me funciona en un archivo bien y ahora en los nuevos que hago se cuelga me vota del sistema vas a disculpar que sea insistente pero no quiero quedarme con la duda hice un formulario muy bueno siguiendo la macro que me diste y agregando esas cosas más y me funciono perfectamente pero ahora no me vota y me vota lanzándome error en range worksheet

Por favor necesito que me puedas indicar que es lo que pasa muchas gracias y disculpa por las molestias

1 Respuesta

Respuesta
1

La respuesta es simple tienes una condición que si en el combobox no hay el nombre de un guardia te va a sacar del sistema, viendo tu programación me doy cuenta de que no tienes instrucciones para llenar el combobox con los nombres de los guardias, la macro que te proporcione no tiene contemplado el manejo de combobox por eso el funcionamiento es diferente, prueba esta macro, le hice algunas mejoras.

Private Sub CommandButton1_Click()
Set DATOS = Range("a1").CurrentRegion
Rem ----SI EL NOMBRE DE LOS POLICIAS NO ESTAN CARGADOS
Rem ----NO PUEDES SELECCIONAR EL NOMBRE DEL POLICIA
Rem ----Y POR TANTO LA MACRO AL ENCONTRAR EL COMBOBOX VACIO
Rem----NO VA A FUNCIONAR POR LA CONDICION QUE PUSISTE
If ComboBox1.Value = "" Then
    MsgBox "Debe ingresar el POLICIA_MUNICIPAL", vbInformation, "MENSAJE"
Else
Set h2 = Sheets("NOTIFICACIONES")
UltimaFila = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
UltimaFil = h2.Range("A" & Rows.Count).End(xlUp).Row
With DATOS
.EntireColumn.AutoFit
ultima = .Columns(1).Rows.End(xlDown)
ultimo = .Columns(2).Rows.End(xlDown)
separa = Split(ultimo, "-")
numero = WorksheetFunction.Text(Val(separa(0)) + 1, "0000")
an = Right(Year(Date), 2)
TextBox2.Text = numero & "-" & an
TextBox1.Text = UltimaFil
cuenta = WorksheetFunction.CountA(.Columns(2))
.Cells(cuenta + 1, 2) = TextBox2.Text
h2.Cells(UltimaFila, 1) = Application.WorksheetFunction.Max(h2.Range("A:A")) + 1
h2.Cells(cuenta + 1, 2) = TextBox2.Text
h2.Cells(UltimaFila, 3) = ComboBox1.Value
h2.Cells(UltimaFila, 4) = CDate(TextBox3.Value)
h2.Cells(UltimaFila, 5) = CDate(TextBox4.Value)
Set DATOS = .CurrentRegion
With DATOS
    Set DATOS = .Rows(2).Resize(.Rows.Count - 1)
End With
End With
Rem ---CONFORME VAS CARGANDO EXPEDIENTES
Rem---SE VA ACTUALIZANDO EL LISTBOX AUTOMATICAMENTE
With ListBox1
    CONTAR = .ListCount
    .RowSource = ""
    .ColumnHeads = True
    .ColumnCount = DATOS.Columns.Count
    .RowSource = "notificaciones!" & DATOS.Address
    .ListIndex = CONTAR
End With
End If
End Sub
Private Sub UserForm_Initialize()
Dim policias As New Collection
Set DATOS = Sheets("notificaciones").Range("a1").CurrentRegion
Rem ----- TE FALTO AGREGAR LAS INSTRUCCIONES PARA
Rem----- CARGAR EL NOMBRE DE LOS POLICIAS EN EL COMBOBOX
Rem --------------------------------------------------------------------------------------
With DATOS
    Set DATOS = .Rows(2).Resize(.Rows.Count - 1, .Columns.Count)
    For i = 1 To .Rows.Count
        policia = .Cells(i, 3)
        On Error Resume Next
            policias.Add policia, CStr(policia)
            If Err.Number = 0 Then ComboBox1.AddItem policia
        On Error GoTo 0
    Next i
End With
Rem --------------------------------------------------------------------------------------
TextBox3 = DateValue(Now): TextBox4 = Format(Now, "hh:mm")
With ListBox1
    .RowSource = ""
    .ColumnHeads = True
    .ColumnCount = DATOS.Columns.Count
    .RowSource = "notificaciones!" & DATOS.Address
End With
ComboBox1.ListIndex = 0
End Sub

Muchas Gracias funciona muy bien pero recién me di cuenta de algo estuve probando lo que me enviaste y sin querer borre el boton que tenia en la hoja para abrir el formulario cuando lo quite y quise abrirlo desde un formulario me volvió a votar error  en la parte final de boton de comando

Private Sub CommandButton1_Click()
CONTAR = .ListCount
    .RowSource = ""
    .ColumnHeads = True
    .ColumnCount = DATOS.Columns.Count
    .RowSource = "notificaciones!" & DATOS.Address
    .ListIndex = CONTAR

 justo en la ultima linea 

.ListIndex = CONTAR ahí me muestra error y luego me vota no quiero abusar de tu tiempo y tu ayuda quizás habrá alguna manera de poder enviarte el archivo para que lo puedas ver? solo si es que se puede tampoco quiero incomodar ya que estuvo muy buena la macro que me enviaste y de igual manera mi puntuación sera perfecta 

Solo quita las líneas

contar=.listcount y .listindex=contar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas