Evitar el cambio de nombre de hojas o hacer que cambie el nombre de la macro...

Tengo este código creado por una experta

Sub IMPRESION4()'agregados de Elsamatilde'' Macro4 Macro'' Acceso directo: CTRL+hApplication.ScreenUpdating = FalseDim respuesta As VariantSet h1 = Sheets("Hoja1")Cadena = Array("O1", "CC1", "E1")For Each cd In CadenaIf h1.Range(cd).Value > 0 Then cadenaNegativa = cadenaNegativa & cd & ", "NextIf cadenaNegativa <> "" Then    MsgBox "Hay valores negativos en las siguientes celdas: " & cadenaNegativa & Chr(10) & _    "El proceso de impresión se cancela.", , "ERROR"    Exit SubEnd If

el cual funciona perfecto 

Pero resulta que el nombre de las hojas puede variar, entonces esto afecta el código.. Ya que me sale error porque no encuentra la hoja1...

¿Alguna sugerencia para solucionar este problema?

1 Respuesta

Respuesta
1

Las hojas, por decirlo de alguna forma, tienen 3 nombres.

Para hacerlo más claro, voy a nombrar a la primera de mis hojas como "base de datos", entonces los nombres de las hojas son:

El nombre de hoja de usuario: "base de datos"

El codename, nombre objeto de la hoja: Hoja1

Y el número consecutivo de hoja: 1

Entonces en la macro puedes usar cualquiera de las 3, por ejemplo si la hoja siempre va a ser la primera, entonces puedes poner esto en tu macro:

Set h1 = Sheets(1)

Si tu hoja va a cambiar de lugar o a cambiar de nombre, puedes utilizar el codename ese no cambia, a menos que lo hagas desde VBA.

Set h1 = Hoja1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas