Activar Macro en celda

23/07/2004 - 17:51 por JLLR | Informe spam
Hola a todos,
1-Tengo un libro con varia hojas,en la primera al activar
una celda y dar Ctrl A se ejecuta una macro que pone
valores en la Hoja correspondiente y si es Ctrl D se
ejecuta una macro para borrarlo,que forma podría usar para
que se activen estas macro pero mas profesional ,no se si
se puede hacer con botones, pero nunca lo he usado y
tampoco se como.
2- En una celda se pueden guardar datos como en un combo
(si se llenara con los nombres de las hojas seria ideal) ,
y de ahi seleccionar, esto es para que no escriban con
error y siempre la macro me encuentre el nombre de la hoja.
No se si me explique bien.

Atte J.LL.R

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
29/07/2004 - 05:34 | Informe spam
hola, JLLR !

... lo que pasa es que no hace refrescamiento
... si cambio el nombre de una hoja o agrego una hoja nueva no me aparece en la lista
... puse el codigo en el evento Change y ahi si se me actualiza
... saber si se puede aplicar a un rango de celdas he tratado pero no logro hacerlo.
En el libro que quiero usarlo, pongo la funcion y el codigo y no hace nada de nada
lo unico que tiene distinto es las 2 macros y la posicion de la celda que ahora es la B3 [...]



tanto para cambiarle nombre como al agregar hojas, la hoja 'afectada' se convierte en la hoja 'activa'...
[por lo cual...] es necesaro 'regresar a' [activar] la hoja que tiene las celdas con reglas de validacion y...
al 'ajuste' a la lista de las celdas [validadas] 'funciona perfecto' en el evento '_activate' de cada hoja ;)
=>a menos que los 'cambios' de nombre y el agregr hojas nuevas 'suceda' por codigo<= ... :((
solo un comentario... si alguna celda ya 'tenia' una seleccion 'validada'
=> al 'actulizarse' la lista de validacion, el 'valor' [depositdo] en 'esa' celda NO se 'refresca' <= :(

si necesitas que las listas 'apliquen' a distintos rangos de distintas hojas...
-> cambia los codigos el modulo del libro y...
-> 'considera' el uso de la propiedad 'CodeName' de las hojas [en virtud de que -probablemente- cambiaran de nombre]
te expongo un ejemplo en seguida, considerndo que las hojas 'Hoja1' y 'Hoja3' son las 'validables'
=>toma en cuenta que 'Hoja1' y 'Hoja3' =>son los CodeName<= de las hojas<=>el nombre que 'tengan' en sus 'pestañas'... se lo puedes modificar<= :))
=>y se necesita una 'sentencia' Case [al menos] por cada rango de celdas 'diferente' de las demas<
saludos,
hector.
en el modulo de codigo del libro -ThisWorkbook- ==Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Select Case Sh.CodeName
Case "Hoja1"
With Sh.Range("a1:a5").Validation
.Delete: .Add xlValidateList, , , HojasEnLibro(Sh.Name)
End With
Case "Hoja3"
With Sh.Range("b1:b5").Validation
.Delete: .Add xlValidateList, , , HojasEnLibro(Sh.Name)
End With
End Select
End Sub
Private Function HojasEnLibro(ByVal Activa As String) As String
Dim Hoja As Integer, Hojas As String
For Hoja = 1 To Worksheets.Count
If Worksheets(Hoja).Name <> Activa Then
If Hojas <> "" Then Hojas = Hojas & ","
Hojas = Hojas & Worksheets(Hoja).Name
End If
Next
HojasEnLibro = Hojas
End Function
Respuesta Responder a este mensaje
#7 JLLR
05/08/2004 - 04:33 | Informe spam
Hola Héctor Miguel ,no había podido entrar al foro, por
estar en un curso unos días.
Probé lo que me dices para varias celdas pero no me
funciona. Aunque yo creo que no me entiendes bien lo que
yo quiero
Mi correo no admite adjuntar si no te mandaba el libro
para que te dieras cuenta.
Te explico para lo que yo quiero hacer este libro ,yo
trabajo en telecomunicaciones y hay unos sistemas
PCM ,que es un tipo de modulación digital.
Estos tienen 30 canales de voz y cada sistema tiene un
nombre por ejemplo PCM-800 , PCM-1230 etc. hay otro
sistema digital que se llama cross connect CXC que coge
por ejemplo el canal 1 del PCM-800 y lo conecta con el 20
o cualquier otro de CH cualquiera de los otros PCM que
están conectados a el CXC.
Yo tengo una plantilla que la llamo circuitos estos
pueden ser mas de 1000 y la tengo puesta en la hoja 1 que
la llamé Circuitos
Y pongo por ejemplo en ella.
A B
C D E
F G
Servicio PCM-Local CH-L Flujo CH-
F PCM-Terminal CH-T
LTN-123 PCM-800 1 FJ-12
30 PCM-1230 8
LDN-012 PCM-543
21 PCM-
1000 1
RD-2-M-CL PCM-900 2 FJ-25
2 PCM-1002 2

Tengo 2 macros una borra y la otra copia al yo activar la
celda por ejemplo la del LDN-012 ,la macro ve si el PCM-
543 existe o no , sino existe da un aviso si deseo crearlo
si le digo que sí ,me pregunta el nombre y crea una hoja
nueva al final .Y pone en el Canal 21 del PCM-543 en la
columna de servicio el nombre LDN-012, en la de flujo no
pone nada porque este no lo usa y en la columna PCM-
terminal pone que está con el PCM-1000-CH-1 ,así cada vez
que yo entro un nuevo servicio en la hoja1(Circuitos) y le
pongo con quien esta conectado me actualiza en los PCM que
intervienen o flujo los datos en el canal (CH)
correspondiente, con esto tengo actualizada la plantilla
circuitos así como todas las hojas (PCM) .Yo para evitarme
lo de crear puse muchas hojas y le fui poniendo
El nombre de los PCM ,que hay en mi trabajo tanto local
como en otro municipio o provincia que tengan algún
servicio con mi centro. Esto lo hice porque me da problema
la macro a veces me borra la hoja1(Circuitos) y no sé
porque ?? y tengo que no salvar para no perderla.
Y lo que yo quería con la lista que se desplegara en la
celda, es en la hoja1 al ir a las columnas B, D , F en
cualquier fila de estas, me aparezca una lista con todos
los nombres de las hojas que tienen los nombre de los PCM
y escoger de ahí el deseado, para que siempre tenga el
mismo formato.
Creo que te lo he explicado lo mejor posible.
A ver si me pueden ayudar en esto o es mucho pedir.
Un saludo JLLR















hola, JLLR !

... lo que pasa es que no hace refrescamiento
... si cambio el nombre de una hoja o agrego una hoja




nueva no me aparece en la lista
... puse el codigo en el evento Change y ahi si se me




actualiza
... saber si se puede aplicar a un rango de celdas he




tratado pero no logro hacerlo.
En el libro que quiero usarlo, pongo la funcion y el




codigo y no hace nada de nada
lo unico que tiene distinto es las 2 macros y la




posicion de la celda que ahora es la B3 [...]

tanto para cambiarle nombre como al agregar hojas, la


hoja 'afectada' se convierte en la hoja 'activa'...
[por lo cual...] es necesaro 'regresar a' [activar] la


hoja que tiene las celdas con reglas de validacion y...
al 'ajuste' a la lista de las celdas


[validadas] 'funciona perfecto' en el evento '_activate'
de cada hoja ;)
=>a menos que los 'cambios' de nombre y el agregr hojas


nuevas 'suceda' por codigo<= ... :((
solo un comentario... si alguna celda ya 'tenia' una


seleccion 'validada'
=> al 'actulizarse' la lista de validacion, el 'valor'


[depositdo] en 'esa' celda NO se 'refresca' <= :(

si necesitas que las listas 'apliquen' a distintos rangos


de distintas hojas...
-> cambia los codigos el modulo del libro y...
-> 'considera' el uso de la propiedad 'CodeName' de las


hojas [en virtud de que -probablemente- cambiaran de
nombre]
te expongo un ejemplo en seguida, considerndo que las


hojas 'Hoja1' y 'Hoja3' son las 'validables'
=>toma en cuenta que 'Hoja1' y 'Hoja3' =>son los


CodeName<= de las hojas<>=>el nombre que 'tengan' en sus 'pestañas'... se lo
puedes modificar<= :))
=>y se necesita una 'sentencia' Case [al menos] por cada


rango de celdas 'diferente' de las demas<>
saludos,
hector.
en el modulo de codigo del libro -ThisWorkbook- ==>Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Select Case Sh.CodeName
Case "Hoja1"
With Sh.Range("a1:a5").Validation
.Delete: .Add xlValidateList, , , HojasEnLibro


(Sh.Name)
End With
Case "Hoja3"
With Sh.Range("b1:b5").Validation
.Delete: .Add xlValidateList, , , HojasEnLibro


(Sh.Name)
End With
End Select
End Sub
Private Function HojasEnLibro(ByVal Activa As String) As


String
Dim Hoja As Integer, Hojas As String
For Hoja = 1 To Worksheets.Count
If Worksheets(Hoja).Name <> Activa Then
If Hojas <> "" Then Hojas = Hojas & ","
Hojas = Hojas & Worksheets(Hoja).Name
End If
Next
HojasEnLibro = Hojas
End Function

.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida