Inicio > Microsoft Excel > vorkosigan > Error de compilación:Se ha detectadoun nombre ambi

Error de compilación:Se ha detectadoun nombre ambi

Experto:
Usuario:
Fecha: 17/05/2008
Valoración: (5,00 sobre 5) Categoría: Microsoft Excel
04/05/2008
mrc72, usuario preguntando en Microsoft Excel
Usuario
Hola: Muchas gracias de antemano por tu ayuda.
Tengo una hoja de excel en la que tengo dos procedimientos sub que comienzan con:
Private Sub Worksheet_Change (ByVal Target As Range) ...etc.
Un procedimiento lo que me hace es meter la fecha actua en una celda en función de que otra celda esté rellena.
El otro procedimiento lo que me hace es poner en mayúsculas precisamente la misma celda anterior que sirve de evento para introducir la fecha en una celda del al lado.
El problema es que al meter los dos procedimientos en la misma hoja me sale el siguiente error: "Error de compilacion. Se ha detectado un nombre ambiguo. Worksheet_Change.
He estado mirando en esta pagina y he llegado a la conclusión de que ambos procedimeientos son incompatibles pues tienen el mismo nombre. Pero no sé cómo solucionar el problema.
¿¿ Puedes ayudarme ?? Mis conocimientos de VBA no son muy grandes.
Muchas gracias por tu ayuda.
 
04/05/2008
mrc72, experto respondiendo en Microsoft Excel
Experto
Los nombres de procedimientos deben ser todos diferentes para que el compilador sepa donde dirigirse en cada momento. Para solucionar tu caso puedes hacer:
1. Dejar el primer sub tal como está para que se ejecute cuando se produzca el evento Change del objeto Worksheet
2. dentro de este sub crear una llamada "PasarAMayúsculas" (por ejemplo)
3. Crear un procedimiento sub tal como:
sub PasarAMayusculas ()
    'aquí el código del otro sub
end sub
Si tienes problemas puedes pasarme el fichero a
<h2>vorkos@gmail.com</h2>
y le echaré un vistazo.
04/05/2008
mrc72, usuario preguntando en Microsoft Excel
Usuario
HOla.
Pero me surge una pregunta que no sé resolver.
¿Cómo se crea una llamada "PasarAMayúsculas" desde este sub?. Dentro del código del primer sub ¿Qué tengo que hacer o crear en este procedimiento?. ¿Es una nueva línea de código con alguna entrada particular?
Y después creo otro procedimiento pero con otro encabezamiento distinto al anterior que tenía de sub......, ¿NO?
Gracias por tu ayuda.
 
06/05/2008
mrc72, experto respondiendo en Microsoft Excel
Experto
Prueba con el siguiente código; hace lo siguiente:
1. insertas cualquier valor en $G$7
2. se activa el evento SelecetionChange. Capturo el valor de la celda que se ha modificado.
3. se dispara el evento change de la hoja, filtro el valor de la celda que me interesa (G7) para que ejecute 2 acciones: a) poner en A1, el valor de la fecha actual y b) ejecuta el procedimiento PonerEnMayusculas.
 
dim celda as string
dim cambiado as boolean
private sub worksheet_change(...
if celda="$G$7" and cambiado=true then
  cells(1,1).value=date
  PonerEnMayusculas(celda)
end if
end sub
private sub worksheet_selectionchange(...
celda=activecell.address
cambiado=true
end sub
sub PonerEnMayusculas(byval posicion as string)
  range(posicion).value=ucase$(range(posicion).value)
end sub
Es decir aprovecha un evento para ejecutar varias acciones, cada una de ellas encapsulada en un sub diferente.
Espero que te sirva como idea... 
14/05/2008
mrc72, usuario preguntando en Microsoft Excel
Usuario
Perdona que no haya escrito antes pero he estado con problemas médicos.
Verás, he puesto el código y no me sale pues no me deja poner dim.... antes del Private... (aunque es cuestión de orden).
Si pudieras mandarme todo el código íntegro con todos los comandos, me resultaría más facil.
Imaginemos que en la columna E quiero que al poner un dato en una celda, me salga en la columna H la fecha y la hora (todo en la misma fila, logicamente) y que a la vez en las columnas F y G todo lo que escriba salga en máyúsculas.
¿Cómo sería el código exacto con estos datos concretos?.
Muchas gracias por tu esfuerzo y tu tiempo.
 
15/05/2008
mrc72, experto respondiendo en Microsoft Excel
Experto
Pásame tu dirección de e-mail. Te enviaré una fichero demo.
15/05/2008
mrc72, usuario preguntando en Microsoft Excel
Usuario
Gracias.
Mi dirección de correo electronico es:
mruizcer@terra.es
 
Te repito las gracias por tu ayuda.
17/05/2008
mrc72, experto respondiendo en Microsoft Excel
Experto
OK. Te he enviado una demo a tu dirección
17/05/2008
mrc72, usuario preguntando en Microsoft Excel
Usuario
Gracias, ahora sí, ya se cumplen las dos cosas que quería: Fecha con hora y mayúsculas en distintos sitios.
Muchas gracias por tu ayuda.
Enlaces patrocinados