Cambiar minúsculas a mayúsculas en celda activa
Me podrán ayudar con lo siguiente, necesito que al escribir por ejemplo en la celda A1 el texto se convierta a mayúsculas con codgo vba al dar enter, ojala y me puedan ayudar.
Respuesta de Andy Machin
1
3 respuestas más de otros expertos
Respuesta de Daniel Espino
2
Respuesta de Isaac Reyes
2
Respuesta de James Bond
2
Comentario borrado por el autor - Isaac Reyes
Con el comentario sobre la macro de James, te doy el punto, aunque él tomó la precaución de hacer pasar por la transformación sólo aquellas celdas que contengan texto. Creo que de todas las sugerencias, la que mejor cumple con el objetivo, si lo de la columna A no fuera sólo un ejemplo, es la de Daniel. En cuanto a varios de los inconvenientes que describes, corresponden al evento SelectionChange (el tú usas) y no al Change. PE1: En el caso de la mía, se cae en casos en que se selecciona más de una celda (que es un asunto que ataca Daniel al utilizar Target(1)).PE2: Tu macro funciona cuando la celda recibe el enfoque, no cuando lo pierde.Saludos - Isaac Reyes
Que tal Isaac, no es necesario usar una validación de texto cuando usas la función UCase, ya que esta función implícitamente valida cada carácter, para probarlo puedes escribir en una celda 123abc y la función UCase lo convertirá a 123ABC, ignorando los números y tomando en cuenta solo las letras. Ahora, no entiendo a que te refieres con que mi macro funciona al recibir el enfoque, no es una cuestión de apreciación artística, es sentido común, para activar una celda, antes debes desactivar otra, o para desactivar una, debes activar otra, osea no importa como lo interpretes, el resultado es el mismo por lógica. Mi macro aplica cambios a la celda seleccionada previamente. Osea al salir de ella - Andy Machin
No sé si la probaste, pero es al contrario. Tu macro se aplica a la celda que estás entrando, no a la celda desde la que estás saliendo. O sea, si la celda que acabas de modificar es A2 y entras a la celda A1, el formato se está aplicando a A1, cuando se debiera aplicar a A2. Por otra parte, al utilizar SelectionChange aplicas el formato cada vez que te mueves de una celda a otra en lugar de aplicarlo sólo cuando modificas el contenido. En cuanto al UCase, cuando lo aplicas a una celda que tiene números con decimales puedes tener efectos adversos. - Isaac Reyes
No postearía un código que no pruebo, a mi me funciona perfectamente aplicando el cambio a la celda que he abandonado, no entiendo por que a usted le funciona al revés. - Andy Machin
Las variables públicas las tenía justo antes del evento, pero después de otros eventos, por lo que NewCell siempre era vacía. Moraleja, la definición de variables globales siempre deben estar en el Olimpo. :-) - Isaac Reyes
Claro, arriba de todo y dentro de nada... me parecía extraño lo que dijiste de los decimales pero de todas formas lo probé y no hay ningún problema, y es obvio que no lo haya, ya que el punto (.) o la coma (,) o CUALQUIER carácter que no sea una letra del abecedario, va a ser ignorado por UCase. Dicho por Microsoft en su documentación: Remarks - Only lowercase letters are converted to uppercase; all uppercase letters and nonletter characters remain unchanged. - Andy Machin
Isaac Reyes si conoces algún caso o tienes un ejemplo de decimales donde pueda fallar UCase por favor compartemelo, porque realmente me da curiosidad jajaja - Andy Machin