Duda sobre error 28 continuo en VBA Excel

Estoy intentando hacer un programa de pruebas en VBA Excel. Es bastante sencillo pero constantemente me aparecen errores 28 y 13. El programa oculta/muestra varios rangos de celdas, y asigna un valor a una celda en concreto.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
book = "Pocket"
If Cells(16, "G") = "x" Then
Rows("91:108").Hidden = True
Rows("126:143").Hidden = True
Rows("243.292").Hidden = True
Rows("318:342").Hidden = True
Range("AD297").Value = 3
Else
Rows("91:108").Hidden = False
Rows("126:143").Hidden = False
Rows("243.292").Hidden = False
Rows("318:342").Hidden = False
Range("AD297").Value = 5
End If
End Sub

Por otro lado, no se si estoy programando en el sitio correcto. Tengo el programa en "ThisWorkbook", la estructura es la que os indico a continuacion:

Microsoft Excel Objetos

- Muestra1 (Pocket)

- ThisWorkbook

2 Respuestas

Respuesta
1

Si la macro debe ejecutarse al cambio en 'cualquier' o todas las hojas del libro se colocan en el objeto ThisWorkbook.

En cambio, si se debe ejecutar en una hoja en particular se colocará en el objeto HOJA donde quieras que actúe. Por ejemplo en Hoja1.

PD) En la sección Macros de mi sitio que dejo al pie encontrarás más detalles de dónde colocar las macros.

Sdos y no olvides valorar la respuesta si el tema queda resuelto, sino comenta para seguir tratándolo.

Gracias por la rápida respuesta.

¿En cuánto a los errores 28 que me aparecen?

El error 28 se produce por un problema de procesos recurrentes... como si llamaras varias veces al mismo proceso.

En tu macro se ve que el único criterio para ejecutar esas instrucciones ante 'cada cambio' en 'cualquier hoja' es mirar si G16 = x... y si es igual será ejecutado este proceso en cada cambio que hagas en la hoja como en AD297... y lo vuelve a ejecutar y nuevamente G16 = x... y así entra en un círculo sin fin.

Aclará en qué hoja debe ejecutarse y al cambio de cuáles celdas (¿solo G16?) Para que te ajuste el código.

Sdos!

Tenia un for puesto antes, que miraba esas 5 celdas si existía una por o X. Pero una vez rellenado, si seguía haciendo cualquier cambio en la hoja más abajo, me volvía a llevar a la primera parte de la hoja.

Debería hacer un do ... while hasta que alguna de esas 5 celdas si tiene una x o X, pero que se pueda ejecutar siempre.

¿Me podrías aconsejar como hacer esa condición?

No tenías que haber valorado aún.

Y no me respondiste a lo que pregunte como para arreglar tu macro que se está ejecutando en TODAS las celdas.

No me di cuenta

Reitero:

En tu macro se ve que el único criterio para ejecutar esas instrucciones ante 'cada cambio' en 'cualquier hoja' es mirar si G16 = x... y si es igual será ejecutado este proceso en cada cambio que hagas en la hoja como en AD297... y lo vuelve a ejecutar y nuevamente G16 = x... y así entra en un círculo sin fin.

Aclará en qué hoja debe ejecutarse y al cambio de cuáles celdas (¿solo G16?) Para que te ajuste el código.

O mejor me envías el libro... los correos están en mi sitio que dejo al pie (o déjame uno tuyo)

Respuesta
1

Entendido Elsa,

Antes lo tenia en un for, pero cada vez que actualizaba cualquier celda de la excel, me volvía a colocar la hoja en cualquiera de esas celdas por las que pregunto.

¿Cómo podría hacer que ese do... while corra hasta que en una de esas 5 celdas exista una x? ¿De forma que evite ese error 28?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas