Llenar ComboBox con Datos de una Hoja Oculta

Saludos. Buenas tardes. Por favor la ayuda para lo siguiente con lo que estoy batallando y no he podido.

Tengo el formulario que les muestro donde tengo dos combobox dependientes. El Combobox 2 se llena segun el valor del Combobox 1. Esto me funciona perfectamente. Los datos están en una hoja llamada "listas". Mi problema es que si esta hoja esta oculta no funciona el formulario y menos se cargan los combobox y yo deseo que funcione con la hoja oculta. Me bota este error:

El código que tengo para los combobox es el siguiente:

_____________

Private Sub cmbFaseOp_Change()
cmbTool.Clear
indice = cmbFaseOp.ListIndex + 13
Cells(4, indice).Select
Do While ActiveCell.Value <> ""
cmbTool.AddItem ActiveCell
ActiveCell.Offset(1, 0).Select
Loop
End Sub

_________________

Private Sub UserForm_Initialize()
cmbFaseOp.Clear
Sheets("listas").Select
Range("M3").Select
Do While ActiveCell.Value <> ""
cmbFaseOp.AddItem ActiveCell
ActiveCell.Offset(0, 1).Select
Loop
End Sub

___________

Nota: "cmbFaseOp" corresponde al ComboBox1 y "cmbToo" corresponde al ComboBox2.


Favor si me ayudan con la linea de código que me permita funcionar el Userform y los Combobox manteniendo la hoja "listas" oculta. El excel que estoy usando es 2016.

Muchas gracias. Muy agradecido por la ayuda.

Respuesta
2

El problema no es la version sino la forma como tienes programada la macro cuando pones activesheet estas declarando que la hoja tiene que esta a fuerza visible por eso no funciona tu macro dicho esto te muestro el resultado de esta macro, primero puedes ver que tengo la hoja listas oculta

luego en esta imagen puedes ver la macro funcionado y trayendo datos de la hoja listas que como dije esta oculta

y la macro es esta, como ves en ninguna línea hago referencia a un activesheet, lo que le digo a la macro es que de que hoja específicamente extraiga la información y hago las cargas a los combobox a través de una matriz de datos que es mucho más eficiente que un do while

Private Sub cmbFaseOp_Change()
Set tabla = Range("tabla_datos")
cmbTool.Clear
With tabla
    filas = .Rows.Count: col = .Columns.Count
    campo = cmbFaseOp.Value
    indice = WorksheetFunction.Match(campo, .Rows(1), 0)
    matriz = .Cells(1, indice).Rows(2).Resize(filas - 1, col)
    cmbTool.List = matriz
End With
set tabla=nothing
End Sub
Private Sub UserForm_Initialize()
Set h1 = Worksheets("listas")
Set datos = h1.Range("m3").CurrentRegion
With datos
    matriz = .Rows(1)
    cmbFaseOp.List = Application.Transpose(matriz)
    .Name = "tabla_datos"
End With
set datos=nothing: set h1=nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas