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.

4 respuestas

Respuesta
2
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target(1).Column = 1 Then
        Target(1).Value = UCase(Target(1).Value)
    End If
End Sub
Respuesta
2

H0la:

En el código de la hoja, tendrías que agregar esto

Private Sub Worksheet_Change(ByVal Target As Range)
    Target.Value = UCase(Target.Value)
End Sub

S@lu2

Respuesta
2

Pega esta macro en el modulo thisworkbok de VBA de la hoja donde las vayas a usar, primero valida que sea texto y si lo es lo pasa a mayúsculas al dar enter

Private Sub Worksheet_Change(ByVal Target As Range)
If WorksheetFunction.IsText(ActiveCell.Offset(-1, 0)) Then
    ActiveCell.Offset(-1, 0) = UCase(ActiveCell.Offset(-1, 0))
End If
End Sub
Respuesta
1

Las respuestas son un poco vagas. Los códigos sugeridos pueden funcionar al principio, pero en el futuro puede que ya no te funcionen por la falta de dinamismo. Estas son algunas de las cosas que podrían suceder, y que un programador debería preguntarse antes de programar esto:

1. ¿Qué pasaría si salgo de la celda con TAB en lugar de Enter?

2. En caso de salir con TAB, ya sea por equivocación o intencionalmente, estando en cualquier celda de la fila 1, recibiría un error de de definicion de objetos si utilizo el offset de la celda, ya que la celda -1 no existiría.

3. ¿Debe ser dinámico y variable el rango? Ya que la mejor respuesta elegida es una que solo funciona con A1.

4. Basado en el comportamiento de de encabezado y continuación de rango Excel, al dar ENTER, nos lleva a la celda de abajo pero de la columna anterior, por lo tanto las sugerencias no funcionarían, ya que se pondría en mayúscula la celda equivocada.

5. Veo que todos usaron el evento Change de la hoja, pero... no es que las mayúsculas deben ponerse al salir de la celda, no cambiarla. ¿Por qué no usar el evento SelectionChange?

Para responder a todas esas preguntas, yo usaría este código como buena práctica:

Option Explicit
Public OldCell As String
Public NewCell As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If NewCell = "" Then NewCell = ActiveCell.Address
OldCell = NewCell
NewCell = ActiveCell.Address
Range(OldCell).Value = UCase(Range(OldCell).Value)
End Sub

Con este código pongo en mayúsculas única y exclusivamente la celda que he abandonado, sin importar la tecla que presione o la dirección en que me mueva.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas