Datos personales
Archivo del blog
Seguidores
martes, 19 de octubre de 2010
CONVERTIR DE NUMEROS A LETRAS
CONVERTIR DE NUMEROS A LETRAS **'
'** AUTOR: OSCAR JAVIER LEON AVENDAÑO **'
'** licencia: USO LIBRE **'
'** http:www.oscarjleon.com **'
'** FECHA DE CREACION: NOV.1991 **'
'** **'
'**********************************************************************
Public Function CLetras(ByVal numero As Double, Optional fmtoUnidad As Integer = 0, Optional Unidades As String = "Kilos", Optional Unidad As String = "Kilo", Optional Genero As String = "M") As String
Dim strUnidad(0 To 5) As String
Dim strUnidades(0 To 5) As String
Dim strCifras(0 To 4) As String
Dim NumeroCifras As Byte
Dim NumeroTercios As Byte
Dim strNumero As String
Dim strTMP As String
Dim dblNumeroEntero As Double
Dim intNumeroTmp As Integer
Dim intCentavos As Integer
Dim J As Integer
Dim intNumTmp As Integer
strUnidades(0) = " pesos m/cte": strUnidades(1) = " unidades": strUnidades(2) = " dolares": strUnidades(3) = " euros": strUnidades(4) = " " & Unidades: strUnidades(5) = ""
strUnidad(0) = " peso m/cte": strUnidad(1) = " unidad": strUnidad(2) = " dolar": strUnidad(3) = " euro": strUnidad(4) = " " & Unidad: strUnidad(5) = ""
strCifras(1) = "": strCifras(2) = " mil ": strCifras(3) = " millones ": strCifras(4) = " mil ": strCifras(0) = " millón "
intCentavos = Int((Round(numero, 2) * 100) - (Int(numero) * 100))
dblNumeroEntero = Round(numero, 2) - (intCentavos / 100)
strNumero = CStr(Abs(dblNumeroEntero))
NumeroCifras = Len(strNumero)
NumeroTercios = Abs(Int(-NumeroCifras / 3))
Select Case dblNumeroEntero
Case 0
strTMP = "cero"
Case 1
If fmtoUnidad <> 5 Then
strTMP = "un"
strUnidades(fmtoUnidad) = strUnidad(fmtoUnidad)
Else
strTMP = "uno"
End If
If Genero <> "M" Then strTMP = "una"
Case 2 To 999
strTMP = CLetrasS1(CLetrasS3(dblNumeroEntero, 1), Genero)
Case 1000
strTMP = "mil"
Case 1000000
strTMP = "un millón"
Case 1000001 To 1999999
strCifras(3) = " millón "
For J = NumeroTercios To 1 Step -1
intNumTmp = CLetrasS3(dblNumeroEntero, J)
If intNumTmp <> 0 Then strTMP = strTMP & CLetrasS1(intNumTmp, Genero) & strCifras(J)
Next J
Case Else
For J = NumeroTercios To 1 Step -1
intNumTmp = CLetrasS3(dblNumeroEntero, J)
If intNumTmp <> 0 Then strTMP = strTMP & CLetrasS1(intNumTmp, Genero) & strCifras(J)
Next J
End Select
If Right(strTMP, 9) = "millones " Then strTMP = Mid(strTMP, 1, (Len(strTMP) - 9)) & "millones de"
If Right(strTMP, 6) = "millón" Then strTMP = Mid(strTMP, 1, (Len(strTMP) - 6)) & "millón de"
strTMP = strTMP & strUnidades(fmtoUnidad)
If intCentavos > 0 Then
Select Case fmtoUnidad
Case 0
strTMP = strTMP & " con " & CLetrasS1(intCentavos, Genero) & " centavos"
Case 5
strTMP = strTMP & " punto " & CLetrasS1(intCentavos, Genero)
End Select
End If
'cambiar "un mil" o "una mil" por "mil"
strTMP = Replace(strTMP, "una mil", "mil", , , vbTextCompare)
strTMP = Replace(strTMP, "un mil", "mil", , , vbTextCompare)
CLetras = strTMP
End Function
'función que secundaria que calcula las decenas
Private Function CLetrasS2(numero As Integer, Genero As String) As String
Dim strUnidades(0 To 20) As String: Dim strDecenas(2 To 9) As String: Dim Unidades As Byte: Dim Decenas As Byte: Dim strTMP As String
strUnidades(0) = "": strUnidades(2) = "dos": strUnidades(3) = "tres": strUnidades(4) = "cuatro": strUnidades(5) = "cinco": strUnidades(6) = "seis": strUnidades(7) = "siete": strUnidades(8) = "ocho": strUnidades(9) = "nueve": strUnidades(10) = "diez": strUnidades(11) = "once": strUnidades(12) = "doce": strUnidades(13) = "trece": strUnidades(14) = "catorce": strUnidades(15) = "quince": strUnidades(16) = "diez y seis": strUnidades(17) = "diez y siete": strUnidades(18) = "diez y ocho": strUnidades(19) = "diez y nueve": strUnidades(20) = "veinte"
strDecenas(2) = "veinti": strDecenas(3) = "treinta": strDecenas(4) = "cuarenta": strDecenas(5) = "cincuenta": strDecenas(6) = "sesenta": strDecenas(7) = "setenta": strDecenas(8) = "ochenta": strDecenas(9) = "noventa"
If Genero = "M" Then
strUnidades(1) = "un"
Else
strUnidades(1) = "una"
End If
Decenas = Int(numero / 10)
Unidades = Int(numero - (Decenas * 10))
Select Case numero
Case 1 To 20
strTMP = strUnidades(numero)
Case 21 To 29
strTMP = strDecenas(Decenas) & strUnidades(Unidades)
Case 30 To 99
If (Decenas > 0) And (Unidades > 0) Then strTMP = strDecenas(Decenas) & " y " & strUnidades(Unidades)
If (Decenas > 0) And (Unidades = 0) Then strTMP = strDecenas(Decenas)
End Select
CLetrasS2 = strTMP
End Function
'Funcion secundaria que calcula las centenas
Private Function CLetrasS1(numero As Integer, Genero As String) As String
Dim strCentenas(1 To 9) As String: Dim Centenas As Byte: Dim strTMP As String: Dim intNumeroEntero As Integer
intNumeroEntero = Int(numero)
Centenas = Int(numero / 100)
If Genero = "M" Then
strCentenas(1) = "ciento": strCentenas(2) = "doscientos": strCentenas(3) = "trecientos": strCentenas(4) = "cuatrocientos": strCentenas(5) = "quinientos": strCentenas(6) = "seiscientos": strCentenas(7) = "setecientos": strCentenas(8) = "ochocientos": strCentenas(9) = "novecientos"
Else
strCentenas(1) = "ciento": strCentenas(2) = "doscientas": strCentenas(3) = "trecientas": strCentenas(4) = "cuatrocientas": strCentenas(5) = "quinientas": strCentenas(6) = "seiscientas": strCentenas(7) = "setecientas": strCentenas(8) = "ochocientas": strCentenas(9) = "novecientas"
End If
Select Case numero
Case 0 To 99
strTMP = CLetrasS2(intNumeroEntero, Genero)
Case 100
strTMP = "cien"
Case 200, 300, 400, 500, 600, 700, 800, 900
strTMP = strCentenas(Centenas)
Case Else
strTMP = strCentenas(Centenas) & " " & CLetrasS2(Int(numero - (Centenas * 100)), Genero)
End Select
CLetrasS1 = strTMP
End Function
'Funcion secundaria que saca un tres cifras del numero
Private Function CLetrasS3(numero As Double, Tercio As Integer) As Integer
Dim CadaCifra As Integer
Dim OrdenInverso As Integer
Dim intNumeroTmp As Integer
Dim NombreCifra(1 To 12) As String
OrdenInverso = Len(CStr(numero))
'Borra la matriz
For CadaCifra = 1 To 12: NombreCifra(CadaCifra) = "0": Next CadaCifra
For CadaCifra = 1 To Len(CStr(numero))
NombreCifra(OrdenInverso) = Val(Mid(CStr(numero), CadaCifra, 1))
OrdenInverso = OrdenInverso - 1
Next CadaCifra
intNumeroTmp = Val(NombreCifra((Tercio * 3)) & NombreCifra((Tercio * 3) - 1) & NombreCifra((Tercio * 3) - 2))
CLetrasS3 = intNumeroTmp
End Function
A hora para bloquear la mayoría de las celdas de la hoja de cálculo, siga estos pasos:
1. Seleccione las celdas que desea que permanezcan desprotegidos . Para seleccionar celdas no adyacentes (no contiguas), mantenga presionada la tecla CTRL y haga clic en las celdas que deben permanecer desprotegidos.
2. En el menú formato , haga clic en celdas y haga clic en la ficha protección .
3. Haga clic para desactive la casilla de verificación bloqueada y haga clic en Aceptar .
4. En el menú Herramientas , elija proteger y, a continuación, haga clic en Proteger hoja . Escriba una contraseña si desea uno y, a continuación, haga clic en Aceptar .
Tutor.
jueves, 14 de octubre de 2010
tamaño de autoformas
En la hoja de cálculo, siga uno de los procedimientos siguientes:
Para bloquear filas, seleccione la fila situada debajo del punto en el que desea que aparezca la división.
Para bloquear columnas, seleccione la columna situada a la derecha del punto en el que desea que aparezca la división.
Para bloquear filas y columnas, haga clic en la celda situada por debajo y a la derecha del punto en el que desea que aparezca la división.
En la ficha Vista, en el grupo Ventana, haga clic en Inmovilizar paneles y, a continuación, haga clic en la opción que desea.
Nota Al inmovilizar paneles, la opción Inmovilizar paneles cambia a Movilizar paneles para que pueda desbloquear filas o columnas inmovilizadas.
Suscribirse a:
Entradas (Atom)