Formulario que obtenga datos de hoja oculta

Estoy haciendo un formulario de datos y logre hacer un combobox "haga una búsqueda predictiva" pero el problema es que la hoja donde se hace la búsqueda debe estar oculta y cuando la ponga oculta no me hace la búsqueda intente ponerlo de varias formas pero no logro hacerlo. Este es el código que utilizo :

Private Sub UserForm_Initialize()

Dim sd As New Collection
Dim celda As Range
Dim dato
Dim r As String
Dim uf As Integer
Application.ScreenUpdating = False
On Error Resume Next
ComboBox1.Clear
Sheets("clientes").Select
Range("A2").Select
uf = Sheets("clientes").Range("A" & Rows.Count).End(xlUp).Row
r = "A2:A" & uf
For Each celda In Range(r)
sd.Add celda.Value, CStr(celda.Value)
Next celda
For Each dato In sd
ComboBox1.AddItem dato
Next dato
Application.ScreenUpdating = True
End Sub

y esta es la del textbox

Private Sub ComboBox1_Change()

Dim fila As Integer
Dim uf As Integer

fila = 2
uf = Sheets("clientes").Range("A" & Rows.Count).End(xlUp).Row + 1

End Sub

La hoja que debe estar oculta es "clientes", (donde la base de datos).

1 respuesta

Respuesta
1

Tenés 2 opciones a mi parecer:

1- Que muestres la hoja antes del proceso y la vuelvas a ocultar al finalizar. Con Application. ScreenUpdating = False antes de mostrarla el usuario no la verá.

2- No selecciones la hoja y solo hacé mención a ella en cada línea necesaria. No probé tu macro pero algunas instrucciones que requieren ser modificadas son:

Private Sub UserForm_Initialize()

Dim sd As New Collection
Dim celda As Range
Dim dato
Dim r As String
Dim uf As Integer
Application.ScreenUpdating = False
On Error Resume Next
ComboBox1.Clear
       'Sheets("clientes").Select   'no seleccionar hoja
       'Range("A2").Select             'no seleccionar celda
uf = Sheets("clientes").Range("A" & Rows.Count).End(xlUp).Row
r = "A2:A" & uf
For Each celda In Sheets("Clientes").Range(r)   'mencionar la hoja
sd.Add celda.Value, CStr(celda.Value)
Next celda
For Each dato In sd
ComboBox1.AddItem dato
Next dato
Application.ScreenUpdating = True
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas