Access - Convertir horas numéricas en letras; idem con fech

 
Vista:

Convertir horas numéricas en letras; idem con fech

Publicado por Edelmiro (5 intervenciones) el 16/02/2003 20:42:15
Solicito una función para convertir en letras la numeración de un textbox con formato de hora y otro de fecha. Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Convertir horas numéricas en letras; idem con fech

Publicado por Alejandro (4142 intervenciones) el 26/04/2023 01:48:17
Para convertir la numeración de un textbox con formato de hora en letras puedes utilizar la siguiente función en VBA:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Function ConvertirHoraLetras(hora As String) As String
    Dim horas() As String, minutos As String
    horas = Split(hora, ":")
 
    Select Case Val(horas(0))
        Case 1
            ConvertirHoraLetras = "una"
        Case 2 To 12
            ConvertirHoraLetras = Num2Words(Val(horas(0)))
        Case 0
            ConvertirHoraLetras = "doce"
        Case Else
            ConvertirHoraLetras = ""
    End Select
 
    If Val(horas(0)) > 0 Then
        If Val(horas(1)) = 0 Then
            ConvertirHoraLetras = ConvertirHoraLetras & " en punto"
        Else
            If Val(horas(1)) < 10 Then
                minutos = "0" & Val(horas(1))
            Else
                minutos = Val(horas(1))
            End If
            ConvertirHoraLetras = ConvertirHoraLetras & " y " & Num2Words(minutos)
        End If
    End If
End Function
 
Function Num2Words(ByVal num As Long) As String
    Dim unidades() As String, decenas() As String
    unidades = Split("cero uno dos tres cuatro cinco seis siete ocho nueve")
    decenas = Split("diez once doce trece catorce quince dieciséis diecisiete dieciocho diecinueve veinte treinta cuarenta cincuenta sesenta setenta ochenta noventa")
    If num < 10 Then
        Num2Words = unidades(num)
    ElseIf num < 21 Then
        Num2Words = decenas(num - 10)
    ElseIf num < 30 Then
        Num2Words = "veinti" & Num2Words(num - 20)
    ElseIf num < 100 Then
        Num2Words = decenas(Int(num / 10) - 1) & " y " & Num2Words(num Mod 10)
    Else
        Num2Words = ""
    End If
End Function

Para utilizar esta función debes pasarle como argumento la hora en formato de texto. Por ejemplo, si tu textbox se llama "txtHora", puedes utilizar la función de la siguiente manera:

1
2
3
Dim hora As String
hora = Me.txtHora.Value
Me.txtHoraLetras.Value = ConvertirHoraLetras(hora)

Para convertir la numeración de un textbox con formato de fecha en letras puedes utilizar la siguiente función en VBA:

1
2
3
4
5
6
7
8
Function ConvertirFechaLetras(fecha As Date) As String
    Dim dia As String, mes As String, anio As String
    dia = Num2Words(Day(fecha))
    mes = Num2Words(Month(fecha))
    anio = Num2Words(Year(fecha))
 
    ConvertirFechaLetras = dia & " de " & mes & " de " & anio
End Function

Para utilizar esta función debes pasarle como argumento la fecha en formato de fecha. Por ejemplo, si tu textbox se llama "txtFecha", puedes utilizar la función de la siguiente manera:

1
2
3
Dim fecha As Date
fecha = Me.txtFecha.Value
Me.txtFechaLetras.Value = ConvertirFechaLetras(fecha)

Espero que esto te ayude.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar