none
Crear WorkSheet Change RRS feed

  • Pregunta

  • Buenas noches señores... saludos a todos los foristas.

    Estoy trabajando con Excel 2010 y en mi Libro, estoy creando, con una macro, varias hojas... a cada hoja, dinamicamente tambien, le he creado Listas desplegables... lo que quiero hacer es lo siguiente: Que a cada Hoja creada, quiero que realice una determinada tarea si cambia la seleccion de la Lista desplegable que les he creado. 

    Segun tengo entendido, esto se logra con el procedimiento (o no se como se llamara), WorkSheet change... el problema es que esto sirve para una hoja creada previamente y a las que yo le quiero asignar eso, las creo dinamicamente..... como hago para crear y asignar ese procedimiento ????

    Espero haberme dato a entender y me puedan ayudar..

    Gracias de antemano.

    viernes, 31 de mayo de 2013 5:20

Respuestas

  • Cierto, disculpa, el problema es que ese código lo he copiado de una aplicación Access y por eso lleva esos xls. que se refieren a la instancia Excel creada desde Excel, elimínalos y debería funcionar.

    Set Modulo = Workbooks(ActiveWorkbook.Name).VBProject.VBComponents("ThisWorkbook")


    Saludos a todos desde Huelva
    http://www.mvp-access.es/emilio/

    • Marcado como respuesta wichortiz viernes, 31 de mayo de 2013 22:07
    viernes, 31 de mayo de 2013 17:46

Todas las respuestas

  • Hola!

    tendrás que crear también el código, tal como así

    strCodigo = "Private Sub Workbook_BeforeClose(Cancel As Boolean)" & vbCrLf
    strCodigo = strCodigo & "ThisWorkbook.Saved = True" & vbCrLf
    strCodigo = strCodigo & "End Sub"
    
    Set Modulo = xls.Workbooks(xls.ActiveWorkbook.Name).VBProject.VBComponents("ThisWorkbook")
    Modulo.CodeModule.InsertLines 3, strCodigo
    


    Saludos a todos desde Huelva
    http://www.mvp-access.es/emilio/

    viernes, 31 de mayo de 2013 13:38
  • Muchas Gracias Emilio por tu respuesta.... fijate que he hecho lo que tu me has indicado adaptandolo a mis necesitades... el problema que en la linea:

    Set Modulo = xls.Workbooks(xls.ActiveWorkbook.Name).VBProject.VBComponents("ThisWorkbook")

    Me marca el error: "Error 424 en tiempo de ejecucion........ Se requiere un Objeto"

    Ya he intentado modificar de varias maneras la parte que dice "ThisWorkbook" creyendo

    que ahi puede estar el problema pero no consigo quitarme ese error...

    Que crees que pueda ser ???

    Gracias de nuevo


    • Editado wichortiz viernes, 31 de mayo de 2013 17:39
    viernes, 31 de mayo de 2013 17:38
  • Cierto, disculpa, el problema es que ese código lo he copiado de una aplicación Access y por eso lleva esos xls. que se refieren a la instancia Excel creada desde Excel, elimínalos y debería funcionar.

    Set Modulo = Workbooks(ActiveWorkbook.Name).VBProject.VBComponents("ThisWorkbook")


    Saludos a todos desde Huelva
    http://www.mvp-access.es/emilio/

    • Marcado como respuesta wichortiz viernes, 31 de mayo de 2013 22:07
    viernes, 31 de mayo de 2013 17:46
  • Gracias Emilio por la atencion prestada..... fijate que ya me funciona, el problema que presento es que me lo pone en el objeto "thisWorkBook" y yo lo quiero en la hoja que he creado dinamicamente.... ya he probado cambiando el valor "ThisWorkbook" por el nombre en si de la hoja (como prueba), pero me da el mensaje que esta fuera de indice..... el nombre de la hoja creada la tengo en una variable.... 

    Como puedo hacer para colocarla en la hoja creada ???

    Gracias por tu ayuda.


    Edito para aclarar cualquier confusion: Me funciona pero porque para probar el codigo, hago un "Copy/Paste" a la hoja creada dinamicamente.... estando en "ThisWorkbook" no me funciona...
    • Editado wichortiz viernes, 31 de mayo de 2013 21:17
    viernes, 31 de mayo de 2013 21:06
  • Gracias por tu ayuda Emilio... he dado con la respuesta siguiendo tu guia y la coloco a continuacion para aquellos que tengan la misma inquietud

    With ActiveWorkbook.VBProject.VBComponents(Hoja.CodeName).CodeModule
    
            LineNum = .CreateEventProc("Change", "Worksheet") + 1
            .InsertLines LineNum, StrCodigo
            
        End With

    La parte "Hoja.CodeName" es la hoja a la que le quiero agregar el evento....

    Gracias de nuevo y doy por terminada la consulta....

    viernes, 31 de mayo de 2013 22:07