Acceder a hoja oculta en excel

Hola que tal, les pido el favor de que me ayuden a modificar éste código para poder ejecutarlo sin necesidad de destapar las hojas a las que accede.
En éste caso la hoja2 se encuentra oculta y la idea es que mantenga así, ya que es información confidencial o en tal caso decubrirla pero que vuelva a quedar oculta.
Sub actualizaComboObra()
'Limpia el combo
ComboBox4.Clear
Hoja2.Select
Range("C3", Range("C1048576").End(xlUp)).Select
'Ajusta el rango
For Each item In Selection
ComboBox4.AddItem item
Next item
End Sub
O me den sugerencias de como realizarlo..
Respuesta
1
Cuando seleccionas una celda o rango de una página, lógicamente, esa página tiene que estar visible. Sino no se podría seleccionar.
Cuando grabas una macro con Excel, está claro que las celdas que marcas y por las que te mueves están visibles, por lo que al intentar reproducirlas con la página oculta puede darte los problemas que estás teniendo.
Pero tranquilo, en este caso tiene una solución fácil. Retocaremos tu código para que haga lo mismo sin seleccionar nada.
Para ello, cada vez que hacemos un "select"... tendremos que quitarlo y lo tendremos en cuenta en las siguientes instrucciones.
En primero lugar podemos decir que estas tres líneas (no cuento en comentario):
Hoja2.Select
Range("C3", Range("C1048576").End(xlUp)).Select
'Ajusta el rango
For Each item In Selection
Las podríamos resumir en esta única línea
For Each item In Sheets("Hoja2").Range("C3", Range("C1048576").End(xlUp))
De esa forma no seleccionamos nada y, en principio, debería funcionarte.
De todas formas, si te da algún problema puedes usar el siguiente código:
Sub actualizaComboObra()
    Dim i As Long
    'Limpia el combo
    ComboBox4.Clear
    ' Rellenamos el combo
    For i = 3 To Sheets("hoja2").Cells.SpecialCells(xlCellTypeLastCell).Row
        If Sheets("hoja2").Cells(i, 3) <> "" Then
            ComboBox4.AddItem Sheets("hoja2").Cells(i, 3)
        End If
    Next i
End Sub
Si no he entendido mal lo que quieres hacer (rellenar el combo con los valores de la columna C), este código lo hace y quita las posibles celdas en blanco.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas