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   -
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

5 respuestas

  1. Sansandrine Mensajes publicados 94 Estado Miembro
     
    ¿Siempre nadie?
    0
  2. gbinforme Mensajes publicados 14930 Fecha de registro   Estado Colaborador Última intervención   4 744
     
    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
    0
    1. Sansandrine Mensajes publicados 94 Estado Miembro
       
      Pero el enlace está en mi mensaje:
      http://www.cijoint.fr/cjlink.php?file=cj201006/cij3nDGLTY.xls
      0
  3. Le Pingou Mensajes publicados 12274 Fecha de registro   Estado Colaborador Última intervención   1 476
     
    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 Sub
    Efectivamente, 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
    0
  4. Le Pingou Mensajes publicados 12274 Fecha de registro   Estado Colaborador Última intervención   1 476
     
    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
    0
    1. gbinforme Mensajes publicados 14930 Fecha de registro   Estado Colaborador Última intervención   4 744
       
      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.
      0
    2. Le Pingou Mensajes publicados 12274 Fecha de registro   Estado Colaborador Última intervención   1 476
       
      Hola gbinforme,
      Muchas gracias por esta valiosa información.
      He insertado en mi código un control sobre el nombre del libro activado y está funcionando.
      Buen fin de semana.
      Saludos.
      El Pingüino
      0
  5. Le Pingou Mensajes publicados 12274 Fecha de registro   Estado Colaborador Última intervención   1 476
     
    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
    0
    1. Sansandrine Mensajes publicados 94 Estado Miembro
       
      Sí, funciona bien, ¡GRACIAS! De esta manera, podré trabajar con varios libros al mismo tiempo.
      Sin embargo, ¿hay algo que deba agregar para que no interfiera más con las otras hojas del libro si quiero agregar más?
      0
    2. Le Pingou Mensajes publicados 12274 Fecha de registro   Estado Colaborador Última intervención   1 476
       
      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
      0
    3. Sansandrine Mensajes publicados 94 Estado Miembro
       
      ¡No tienes que disculparte! ¡Realmente me has ayudado mucho!
      Y además, me permite perfeccionar mi VBA.
      ¡Otra vez GRACIAS por tomarte el tiempo para ayudarme!

      Sansandrine
      0
    4. gbinforme Mensajes publicados 14930 Fecha de registro   Estado Colaborador Última intervención   4 744
       
      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.
      0
    5. Le Pingou Mensajes publicados 12274 Fecha de registro   Estado Colaborador Última intervención   1 476
       
      Hola gbinforme,
      Siempre es un gran placer que anote sus consejos y los ponga en práctica.
      Saludos amistosos.
      El Pingüino.
      0