Vba Excel. Como mostrar en un Listbox de un formulario los 5 últimos registros

Tengo un formulario que alimenta la hoja llamada Registros, y necesito que a medida que voy tomando cada ID (con un scanner de códigos de barra) me muestre en un Listbox los últimos 5 registros tomados de la hoja registros que tiene unas 6 columnas con sus respectivos datos.

2 respuestas

Respuesta
1

Puedes comentar en el siguiente orden:

1. ¿Cómo se llama la hoja dónde están los registros?

2. ¿Tienes encabezado?

3. ¿En cuál fila está el encabezado?

4. ¿En cuál fila empiezan los datos?

5. ¿Cuáles son esas 6 columnas?

6. ¿Todas las columnas tienen datos?

7. Solamente quieres los últimos 5 registros, ¿o aplica alguna condición?

8. ¿Cómo se llama el listbox?

9. ¿El formulario está en un userform?

10. En dónde capturas el ID, en un textbox, ¿cómo se llama el textbox?

11. Después de escanear en el textbox, ¿automáticamente se sale del textbox?

Estimado Dante!. La hoja es lalmada REGISTROS. Todas las filas tienen datos. Solo quiero mostrar en el listbox los ultimos 5 registros que voy escaneando (ID). El listbox no tiene nombre. Al formulario lo nombre Despachos Web 2020. Donde capturo el ID, el texbox se llama Texbox1. El formulario se llama DESPACHOS. Después de escanear, pasa abajo (enter) y me sigue permitiendo escanear todos los ID que quiera, y me va completando en la hoja registros los demás datos que complete en el formulario

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
dato = TextBox1.Value
contarsi = Application.WorksheetFunction.CountIf(Sheets("REGISTROS").Columns(1), dato)
If contarsi = 1 Then
MsgBox "El código ya existe, no se permiten duplicados"
TextBox1.SetFocus
Exit Sub
End If

Dim lr As Long
If TextBox3.Value = "" Or ComboBox1.Value = "" Or ComboBox2.Value = "" Then
MsgBox "Existen campos en blanco.Completelos!"
Cancel = False
Exit Sub
End If
If TextBox1.Value <> "" And ComboBox1.ListIndex > -1 And ComboBox2.ListIndex > -1 Then
'
With Sheets("REGISTROS")
lr = .Range("A" & Rows.Count).End(3).Row + 1
.Range("A" & lr).Value = TextBox1
.Range("D" & lr).Value = TextBox3
.Range("B" & lr).Value = ComboBox1
.Range("C" & lr).Value = ComboBox2
.Range("E" & lr).Value = Date
.Range("F" & lr).Value = 1
.Range("G" & lr).Value = ComboBox3
.Range("H" & lr).Value = Now
.Range("I" & lr).Value = ComboBox4
.Range("j" & lr).Value = TextBox6
Set h1 = Sheets("REGISTROS")
u = h1.Range("A" & Rows.Count).End(xlUp).Row
TextBox4 = h1.Range("A" & u)
End With
TextBox1.Value = ""
Cancel = True
End If
End Sub

Private Sub UserForm_Activate()
With ComboBox1
.AddItem "Mañana"
.AddItem "Tarde"
.AddItem "Noche"
.TabIndex = 0
.SetFocus
End With
'
With ComboBox2
.AddItem "Andreani"
.AddItem "Mercado libre"
.AddItem "Retiro en tienda"
.TabIndex = 1
End With
With ComboBox3
.AddItem "5458 - LA PLATA"
.AddItem "5747 - MENDOZA"
.AddItem "6063 - QUILMES"
.AddItem "72 - CITY BELL"
.AddItem "90 - BAHIA BLANCA"
.AddItem "92 - RESISTENCIA CHACO"
.AddItem "ACOYTE"
.AddItem "AGUIRRE"
.AddItem "ALDREY"
.AddItem "AUCHAN"
.AddItem "CABELLO"
.AddItem "CABILDO"
.AddItem "CANNING"
.AddItem "CORDOBA 2"
.AddItem "CORDOBA 3"
.AddItem "ELCANO"
.AddItem "FLORIDA"
.AddItem "GALLO"
.AddItem "LACROZE"
.AddItem "LIBERTADOR 2"
.AddItem "LOMAS CENTER"
.AddItem "MARTINEZ"
.AddItem "MEDRANO"
.AddItem "PILAR2"
.AddItem "PLAZA OESTE"
.AddItem "RAWSON"
.AddItem "RIOBAMBA"
.AddItem "RIVADAVIA"
.AddItem "ROSARIO MINETTI"
.AddItem "ROSARIO SHOPPING"
.AddItem "SANTA FE"
.AddItem "TALCAHUANO"
.TabIndex = 1
With ComboBox4
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
.TabIndex = 1
End With
End With
TextBox1.TabIndex = 2
End Sub

Private Sub CommandButton1_Click()
Set h = Sheets("REGISTROS") 'hoja a buscar
Set b = h.Range("A:A").Find(TextBox5.Text, lookat:=xlWhole)
If Not b Is Nothing Then
If MsgBox("VALOR ENCONTRADO ¿DESEA ELIMINARLO?", vbExclamation + vbYesNo, "AVISO") = vbYes Then
h.Rows(b.Row).Delete
End If
Else
MsgBox "VALOR NO ENCONTRADO"
End If
End Sub

Private Sub TextBox10_Change() 'APLICAR / A FECHA

largo_entrada = Len(Me.TextBox2)

Select Case largo_entrada
Case 2
Me.TextBox2.Value = Me.TextBox2.Value & "/"
Case 5
Me.TextBox2.Value = Me.TextBox2.Value & "/"
End Select

End Sub

Private Sub CommandButton2_Click()
MsgBox "Datos Registrados!", vbInformation, ""
Unload Me
Despachos.Show

End Sub

Private Sub CommandButton4_Click()
MsgBox "Cerrar?", vbInformation, ""
Unload Me


End Sub

Perdona pero no entendí.

Por favor, podrías comentar lo siguiente y en este orden:

1. ¿Cómo se llama la hoja dónde están los registros?

2. ¿Tienes encabezado?

3. ¿En cuál fila está el encabezado?

4. ¿En cuál fila empiezan los datos?

5. ¿Cuáles son esas 6 columnas?

6. ¿Todas las columnas tienen datos?

7. Solamente quieres los últimos 5 registros, ¿o aplica alguna condición?

8. ¿Cómo se llama el listbox?

9. ¿El formulario está en un userform?

10. En dónde capturas el ID, en un textbox, ¿cómo se llama el textbox?

11. Después de escanear en el textbox, ¿automáticamente se sale del textbox?

Respuesta
1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas