Saltar al contenido

Hacer referencia completa a una hoja de trabajo por nombre en clave

La guía paso a paso o código que hallarás en este post es la resolución más fácil y válida que encontramos a esta duda o problema.

Solución:

Hacer referencia a una hoja por su nombre en clave siempre implica la hoja en ThisWorkbookes decir, el libro de trabajo que contiene el código que está ejecutando.

Parece que no hay una forma sencilla de calificar completamente una hoja en un libro de trabajo diferente usando su nombre en clave.

Esta función te ayudará a hacer esto:

Function GetSheetWithCodename(ByVal worksheetCodename As String, Optional wb As Workbook) As Worksheet
    Dim iSheet As Long
    If wb Is Nothing Then Set wb = ThisWorkbook ' mimics the default behaviour
    For iSheet = 1 To wb.Worksheets.Count
        If wb.Worksheets(iSheet).CodeName = worksheetCodename Then
            Set GetSheetWithCodename = wb.Worksheets(iSheet)
            Exit Function
        End If
    Next iSheet
End Function

Ejemplo de uso:

GetSheetWithCodename("Sheet1", Workbooks("Book2")).Cells(1, 1) = "Sheet1 in Book2"
GetSheetWithCodename("Sheet1", ActiveWorkbook).Cells(1, 1) = "Sheet1 in ActiveWorkbook"
GetSheetWithCodename("Sheet1").Cells(1, 1) = "Sheet1 in ThisWorkbook" 

Tenga en cuenta que la última línea es equivalente a simplemente decir:

Sheet1.Cells(1, 1) = "Sheet1 in ThisWorkbook" 

porque, como se mencionó anteriormente, referirse a una hoja por su nombre en clave siempre implica la hoja en ThisWorkbook.

Puede hacer esto agregando el segundo Libro de trabajo como referencia y llamando al libro de trabajo por el nombre del Proyecto VBA.

Obviamente, es una buena idea cambio ¡el nombre del proyecto VBA del predeterminado ‘VBAProject’!

Probé esto creando dos nuevos libros de trabajo, cada uno con una hoja, con un valor de 1 o 2 en la celda A1. Los proyectos de VBA se denominaron ‘Proj1’ y ‘Proj2’, y los CodeNames de las hojas de trabajo se dejaron como ‘Sheet1’.

Este es el código que usé:

Sub test()

    Debug.Print Proj1.Sheet1.Cells(1, 1)
    Debug.Print Proj2.Sheet1.Cells(1, 1)

End Sub

Dando una salida de:

1
2

Se puede hacer referencia a las hojas de trabajo por su nombre en clave cuando el código está en el mismo libro de trabajo, por lo que no es necesario calificar por completo. No puede hacer referencia a otra hoja de libros de trabajo por nombre en clave directamente a menos que recorra cada hoja y verifique el nombre en clave

así que esto es suficiente sin necesidad de crear una variable

with WsSummary
  .Cells(1,1).Value = "Test"
end with

Si conservas alguna desconfianza o capacidad de arreglar nuestro artículo te sugerimos dejar un paráfrasis y con deseo lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *