Libro de VBA que interfiere con otros
Resuelto
Sansandrine
Mensajes publicados
94
Estado
Miembro
-
Le Pingou Mensajes publicados 12274 Fecha de registro Estado Colaborador Última intervención -
Le Pingou Mensajes publicados 12274 Fecha de registro Estado Colaborador Última intervención -
Hola,
Tengo un archivo que contiene macros y que interfiere con otros archivos y no sé cómo hacer para que la macro sea solo para este archivo.
Cuando abro otro archivo de Excel me aparece:
Error de ejecución 9: el índice no pertenece a la selección
Y cuando el archivo es el único abierto no hay problemas. He intentado definir el libro al inicio de la macro: woorkook(« ... »).sheets(« men_ext »).
Además, tuve que eliminar todas las otras hojas de este libro porque también interferían, pero eso no es lo más grave; quiero poder trabajar en otros libros al mismo tiempo que en este sin que me aparezca el mensaje de error.
Espero que alguien pueda ayudarme.
Gracias de antemano.
Aquí está mi archivo: http://www.cijoint.fr/cjlink.php?file=cj201006/cij3nDGLTY.xls
Configuración: Windows XP / Firefox 3.6.2/EXCEL 2003
Tengo un archivo que contiene macros y que interfiere con otros archivos y no sé cómo hacer para que la macro sea solo para este archivo.
Cuando abro otro archivo de Excel me aparece:
Error de ejecución 9: el índice no pertenece a la selección
Y cuando el archivo es el único abierto no hay problemas. He intentado definir el libro al inicio de la macro: woorkook(« ... »).sheets(« men_ext »).
Además, tuve que eliminar todas las otras hojas de este libro porque también interferían, pero eso no es lo más grave; quiero poder trabajar en otros libros al mismo tiempo que en este sin que me aparezca el mensaje de error.
Espero que alguien pueda ayudarme.
Gracias de antemano.
Aquí está mi archivo: http://www.cijoint.fr/cjlink.php?file=cj201006/cij3nDGLTY.xls
Configuración: Windows XP / Firefox 3.6.2/EXCEL 2003
5 respuestas
-
-
Hola
Tu mensaje no es lo suficientemente preciso como para que podamos darte una respuesta adecuada.
Es probable que tu macro no esté correctamente codificada, pero sin verla, no es posible adivinar qué no funciona: ¡las posibilidades de error son infinitas!
Si pudieras subir un ejemplo de libro, sin datos identificables ni privados, pero con la estructura de tus datos y las macros en http://www.cijoint.fr/ y luego compartir el enlace generado aquí, sería más fácil.
--
Siempre zen -
Hola,
Acabo de ver el puesto y se trata de un procedimiento que he escrito:Private Sub Worksheet_Calculate() Sheets("MEN_EXT").Activate If ValVerif = "" Then Verification End If End SubEfectivamente, si el libro está abierto y se abre otro, el procedimiento se desencadena y provoca un error.
Es extraño, voy a mirar.
Para información, el libro en cuestión se encuentra en: http://www.cijoint.fr/cjlink.php?file=cj201006/cij3nDGLTY.xls
--
Saludos.
El Pingüino -
Hola Sansandrine,
Reemplaza el procedimiento existente por este:Private Sub Worksheet_Calculate() If Not ActiveWorkbook.Name = "MEN EXT avec calcul de surfaces.xls" Then Exit Sub Sheets("MEN_EXT").Activate If ValVerif = "" Then Verification End If End Sub
Nota: verifica que el nombre del libro de trabajo sea correcto:
"MEN EXT avec calcul de surfaces.xls"
Saludos.
El Pingüino-
Hola El Pingüino,
Efectivamente no tenía el libro de trabajo durante mi mensaje y no pensé en "calcular".
Esta función puede resultar útil, pero tiene la gran desventaja de ser activada constantemente, cada vez que se modifica un libro de trabajo, sea el que sea. También está activa, por supuesto, ante la más mínima modificación de una hoja por macro, lo que hace que realmente deba ser muy liviana, perfectamente delimitada y utilizada con moderación. -
-
-
Hola Sansandrine,
¿Está bien ahora con esta corrección? https://forums.commentcamarche.net/forum/affich-17916795-vba-classeur-qui-interfere-avec-les-autres#8
--
Saludos.
El Pingüino-
-
Hola,
Reemplace el procedimiento existente por este:
Private Sub Worksheet_Calculate()
If Not ActiveWorkbook.Name = "MEN EXT con cálculo de superficies.xls" Then Exit Sub
If Not ActiveSheet.Name = "MEN_EXT" Then Exit Sub
Sheets("MEN_EXT").Activate
If ValVerif = "" Then
Verificación
End If
End Sub
Disculpe las molestias causadas.
Saludos.
El Pingüino -
-
Hola Le Pingou,
Al evitar las negaciones y al positivizar, también se puede escribir:
Private Sub Worksheet_Calculate() If ActiveWorkbook.Name = "MEN EXT avec calcul de surfaces.xls" _ And ActiveSheet.Name = "MEN_EXT" _ And ValVerif = "" Then Verification End Sub
Me gusta simplificar al máximo para facilitar la comprensión posterior...
La perfección se alcanza, no cuando no hay nada más que añadir, sino cuando no hay nada más que retirar. Antoine de Saint-Exupéry
Con cariño y que tengas un buen día. -
-