Formulario en Excel 2003 con combobox dependientes

Tengo un archivo de Excel con dos hojas: "Registros" y "BBDD". Estoy creando un formulario y tengo dos consultas:

  1. Tengo dos combobox dependientes que resolví con la siguiente macro:
  2. Private Sub ComboBox1_Change()
    ComboBox2.Clear
    indice = ComboBox1.ListIndex + 2
    Cells(3, indice).Select
    Do While ActiveCell.Value <> ""
    ComboBox2.AddItem ActiveCell
    ActiveCell.Offset(1, 0).Select
    Loop
    End Sub
    Private Sub UserForm_Initialize()
    ComboBox1.Clear
    Sheets("BBDD").Select
    Range("B2").Select
    Do While ActiveCell.Value <> ""
    ComboBox1.AddItem ActiveCell
    ActiveCell.Offset(0, 1).Select
    Loop
    End Sub

El formulario lo abro desde la hoja "Registros" y, siempre que lo hago, me redirecciona a la celda K2 de la hoja "BBDD" y no encuentro en el código porque es así. Necesito que siempre se quede en la hoja "Registros".

2. La segunda consulta que tengo, es ¿cómo agregar en el formulario la fecha actual? Porque después necesito crear mi base de datos con este dato.

1 respuesta

Respuesta
1

Para cargar el combobox1 tenés una línea donde estás seleccionando la hoja BBDD y luego la recorre llenando el control... por eso se queda en esa hoja.

Cambiá tu bucle por este otro:

Private Sub UserForm_Initialize()
'x Elsamatilde
Dim i As Integer
i = 2
ComboBox1.Clear
While Sheets("BBDD").Range("B" & i) <> ""
ComboBox1.AddItem Sheets("BBDD").Range("B" & i)
i = i + 1
Wend
End Sub

Para la siguiente consulta por favor deja el nuevo tema en el tablón. Podés indicar que es para Elsa Matilde si te parece.

PD) Más de 40 ejemplos de bucles en Guía Temática N° 6.

Sdos.

Elsa

Muchas gracias por tu respuesta.

Los códigos me quedaron de la siguiente manera:

Private Sub ComboBox1_Change()
ComboBox2.Clear
indice = ComboBox1.ListIndex + 2
Cells(3, indice).Select
Do While ActiveCell.Value <> ""
ComboBox2.AddItem ActiveCell
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Private Sub UserForm_Initialize()
'x Elsamatilde
Dim i As Integer
i = 2
ComboBox1.Clear
While Sheets("BBDD").Range("B" & i) <> ""
ComboBox1.AddItem Sheets("BBDD").Range("B" & i)
i = i + 1
Wend
End Sub

Algo mal estoy haciendo porque ya no funcionan los combobox como antes, no me toma ningún dato la ComboBox1.

De nuevo, muchas gracias.

Verifica si está bien escrito el nombre de la hoja y si hay datos en col B... porque no hay ningun motivo para que no se cargue manteniendo las mismas macros.

De todos modos, si querés mantener tu macro agregale las últimas instrucciones para que vuelva a tu hoja ... pero busca primero la razón de la falla ;)

Private Sub UserForm_Initialize()
ComboBox1.Clear
Sheets("BBDD").Select
Range("B2").Select
Do While ActiveCell.Value <> ""
ComboBox1.AddItem ActiveCell
ActiveCell.Offset(0, 1).Select
Loop
'regreso a la hoja de trabajo
Sheets("Registros").Select

'opcional: seleccionar alguna celda 

Range("A1").select
End Sub

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas