Inicio > Microsoft Excel > caranbis > Empezar siempre en mayúscula<Problemas con un macr

Empezar siempre en mayúscula<Problemas con un macr

Experto:
Usuario:
Fecha: 20/09/2009
Valoración: (4,00 sobre 5) Categoría: Microsoft Excel
17/09/2009
kioni09, usuario preguntando en Microsoft Excel
Usuario
Saludos.
De un foto copie un macro para poner los numeros a letra directamente.
este lo modifique un poco a mi gusto.
Function PesosMN(tyCantidad As Currency) As String
Dim lyCantidad As Currency, lyCentavos As Currency, lnDigito As Byte, lnPrimerDigito As Byte, lnSegundoDigito As Byte, lnTercerDigito As Byte, lcBloque As String, lnNumeroBloques As Byte, lnBloqueCero
Dim laUnidades As Variant, laDecenas As Variant, laCentenas As Variant, I As Variant 'Si esta como Option Explicit
tyCantidad = Round(tyCantidad, 2)
lyCantidad = Int(tyCantidad)
lyCentavos = (tyCantidad - lyCantidad) * 100
laUnidades = Array("un", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez", "once", "doce", "trece", "catorce", "quince", "dieciseis", "diecisiete", "dieciocho", "diecinueve", "veinte", "veintiun", "veintidos", "veintitres", "veinticuatro", "veinticinco", "veintiseis", "veintisiete", "veintiocho", "veintinueve")
laDecenas = Array("diez", "veinte", "treinta", "cuarenta", "cincuenta", "sesenta", "sesenta", "ochenta", "noventa")
laCentenas = Array("ciento", "doscientos", "trescientos", "cuantrocientos", "quinientos", "Seiscientos", "Setecientos", "ochocientos", "novecientos")
lnNumeroBloques = 1
Do
lnPrimerDigito = 0
lnSegundoDigito = 0
lnTercerDigito = 0
lcBloque = ""
lnBloqueCero = 0
For I = 1 To 3
lnDigito = lyCantidad Mod 10
If lnDigito <> 0 Then
Select Case I
Case 1
lcBloque = " " & laUnidades(lnDigito - 1)
lnPrimerDigito = lnDigito
Case 2
If lnDigito <= 2 Then
lcBloque = " " & laUnidades((lnDigito * 10) + lnPrimerDigito - 1)
Else
lcBloque = " " & laDecenas(lnDigito - 1) & IIf(lnPrimerDigito <> 0, " y", Null) & lcBloque
End If
lnSegundoDigito = lnDigito
Case 3
lcBloque = " " & IIf(lnDigito = 1 And lnPrimerDigito = 0 And lnSegundoDigito = 0, "cien", laCentenas(lnDigito - 1)) & lcBloque
lnTercerDigito = lnDigito
End Select
Else
lnBloqueCero = lnBloqueCero + 1
End If
lyCantidad = Int(lyCantidad / 10)
If lyCantidad = 0 Then
Exit For
End If
Next I
Select Case lnNumeroBloques
Case 1
PesosMN = lcBloque
Case 2
PesosMN = lcBloque & IIf(lnBloqueCero = 3, Null, " mil") & PesosMN
Case 3
PesosMN = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, " millón", " millones") & PesosMN
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
PesosMN = "" & PesosMN & IIf(tyCantidad > 1, " pesos ", " peso ") & Format(Str(lyCentavos), "00") & "/100"
End Function
Una modificacion que era que antes me salian todos los numeros en mayuscula, y lo puso en minuscula. Pero Ocurre lo siguiente.
Me gustaria que la celda siempre empezara con la primera letra en mayuscula
En vez de
1000                        un mil pesos 00/100
Seria
1000                        Un mil pesos 00/100
trate cambiandole en el macro en vez de "un" ponerle "Un"
pero ocurre lo siguente se podria
1001                   Un mil y Un pesos00/100
Pero la manera que me gustaria seria la siguente
10001                 Un mil y un pesos 00/100
Muchas Gracias.
17/09/2009
kioni09, experto respondiendo en Microsoft Excel
Experto
'agrega estas dos lineas al final de la funcion:
PesosMN = Trim(PesosMN)
PesosMN = UCase(Mid(PesosMN, 1, 1)) & Mid(PesosMN, 2, Len(PesosMN))
End Function
18/09/2009
kioni09, usuario preguntando en Microsoft Excel
Usuario
Excelente!, funciono !
Ahora para finalizar y puntuar.
me podrias explicar que es lo que hiciste que que significa, ya que me estoy poniendo aprender este lenguaje.
pk Trim, U Case etc..
Gracias con eso finalizo
20/09/2009
kioni09, usuario preguntando en Microsoft Excel
Usuario
Muy Bien. Me ha sido de gran utilidad
Enlaces patrocinados