Dim Fila As Integer Dim UltimaFila As Integer Dim Valor As Variant Dim Resultado As String
' Detectar la última fila con datos en la columna A UltimaFila = Cells(Rows.Count, 1).End(xlUp).Row
' Recorre las filas con datos en la columna A For Fila = 5 To UltimaFila Valor = Range("A" & Fila).Value
' Evaluar el tipo de dato
Select Case True
Case VBA.IsEmpty(Valor) Resultado = "Celda vacía" Case VBA.IsDate(Valor) ' Si es una fecha, formatearla en formato largo Resultado = VBA.FormatDateTime(Valor, vbLongDate) Case VBA.IsNumeric(Valor) ' Si es un número, convertirlo y formatearlo como moneda If Valor >= 0 Then Resultado = VBA.FormatCurrency(Valor, 2) Else Resultado = VBA.Format(Valor, "($#,##0.00)") End If Case Else ' Si no es válido, mostrar mensaje de error Resultado = "No es un número válido" End Select Range("B" & Fila).Value = Resultado
El código está bien. La detección de la última fila, el recorrido y el uso de Select Case True funcionan correctamente. Las validaciones para vacío, fecha y número están bien aplicadas, y el mensaje del Case Else es coherente con la condición. No hay errores de lógica.
Buenas tardes, Osmani. Gracias por tu aporte. Usar Select Case también es una muy buena opción para organizar las validaciones de forma más clara. En este caso se usó por simplicidad, pero tu sugerencia aporta una alternativa útil.
Inicia sesión para dejar tu duda, comentario y/o respuesta