¿Cómo usar esta macro sin que la hoja este activa?

Tengo esta función que llevara a la variable mytabla, el rango de la tabla que tenga en determinada hoja, al llamarla para ejecuntarla con el resto de su código desde otra macro en el mismo modulo funciona perfectamente, siempre y cuando la hoja a la cual hago referencia con nom_hoja este activa, pero si tengo activa o abierta cualquier otra hoja diferente a la que estoy haciendo referencia con nom_hoja me da error en la fila 9, ¿Cómo debo modificar la función para que corra, este o no activa la la hoja de referencia?, lo cual es raro porque creería que así es como debe estar, no quiero activar la hoja desde la función, quiero que ejecute el procedimiento sin necesidad de activar la hoja, muchas gracias.

Function lista_col(nom_hoja As String, tabla As Integer, nom_columna) As Range
    Dim lista As Range
    Set mytabla = sheets(nom_hoja).ListObjects.item(tabla)
    With mytabla
9.      Set lista = .Range.Range(Cells(1, 1), Cells(1, .Range.Columns.Count)).Find(nom_columna)
        ....
    End With
End function
Respuesta
1

[Hola

Cuando dejas algo como esto:

Cells(1, 1)

Es equivalente a:

Activesheet. Cells(1, 1)

Así esté, aparentemente, dentro de otra instrucción, por lo que debes cambiar tu línea respectiva por esto:

      Set lista = .Range.Range(Sheets(nom_hoja).Cells(1, 1), Sheets(nom_hoja).Cells(1, .Range.Columns.Count)).Find(nom_columna)

Comentas

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas