Macros cambia fecha cuando se ejecuta

Estimado Experto, a continuación mi código:
Sub Mayusculas ()
For Each Cell in Selection
If Left (Cell.Formula, 1) <> "=" Then
Cell.Value = Ucase(Cell.Value)
End If
Next
End Sub
¿Cómo usted ya se abra percatado estas pequeñas lineas de código lo que hacen es convertir el texto a Mayúsculas respetando las celdas que contienen fórmula en un rango activo, todo va bien hasta que, si en el rango en el que aplico el macros me encuentro con una fecha por ejemplo "01/02/2009" la macros automáticamente la cambia y la vuelve a escribir así "02/01/2009", lo pone en formato de fecha anglo, que modificación considera usted necesaria que agregue a mi código para que las fechas no sufran cambios cuando ejecute nuevamente la aplicación?
Le agradezco

1 respuesta

Respuesta
1
Donde armas la fecha probá con
Cell.Value = CDate(Dia & "/" & Mes & "/" & año)
Estimado Experto, de antemano le pido una disculpa por las molestias ocasionadas, también debe saber que aunque ya tengo muchos años trabajando con Excel hasta apenas hace unos días me he estado metiendo con los Macros por lo que soy un principiante aunque me he dado cuenta que saber usar las fórmulas me ha ayudado mucho a entender como trabaja VBA en excel, a continuación un nuevo código que he escrito
Sub Mayusuculas ()
Dim Dia As String
Dim Mes As String
Dim Año As String
For Each Cell in Selection
   If IsDate(Cell.Value) Then
      Dia = Day (Cell)
      Mes = Month (Cell)
      Año = Year (Cell)
   Cell.Value = Dia & "/" & Mes & "/" & Año
   End If
Next
For Each Cell in Selection
   If Left (Cell.Formula, 1 ) <> "=" Then
   Cell.Value = UCase (Cell.Value)
   End If
Next
End Sub
Pues a resuelto mi problema inicial, las fechas no sufren cambios en la forma en que presentan el día y el mes, ahora lo que sucede es que al terminar la operación el resultado de separar la fecha por día, mes y año la macros la reconoce como Texto.
Supongo que ya estaré más cerca de la solución.
Perdón, *he resuelto mi problema inicial... ¿ahora cómo logro que la fecha la escriba como fecha y no como texto?
Gracias!
Igual creo que si te funciona la siguiente modificación que hice a tu macro inicial será más sencilla
Sub Mayusculas ()
For Each Cell in Selection
If (Left (Cell.Formula, 1) <> "=" and Not IsDate(Cell.Value) Then
Cell.Value = Ucase(Cell.Value)
End If
Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas