Calcula la letra del Nif en Visual Basic
Visual Basic 27 marzo 2008
Aquí os dejo el código de una aplicación muy simple pero efectiva que poniendo los números del NIF os calcula la letra.
La aplicación tiene la particularidad de permanecer siempre visible en la esquina inferior derecha y ocupar poco espacio, de esta manera es posible tenerla a mano mientras se trabaja con otras aplicaciones y no nos quita visión.
A continuación voy a dejar el código pero si alguien está interesado en la aplicación completa no tiene mas que decirlo y subo una instalación para que la descarguéis.
El programa se compone de un módulo con el siguiente código:
-
Public Declare Function SetWindowPos Lib "user32" _
-
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
-
ByVal x As Long, ByVal y As Long, _
-
ByVal cx As Long, ByVal cy As Long, _
-
ByVal wFlags As Long) As Long
-
Public Const HWND_TOPMOST = -1
Y un formulario con el siguiente código:
-
Private Sub CalculaNIF(strA As String)
-
Const cCADENA = "TRWAGMYFPDXBNJZSQVHLCKE"
-
Const cNUMEROS = "0123456789"
-
Dim strT As String, strB As String
-
Dim a#, Nif#, b#, c#
-
Dim i As Integer
-
-
strT = Trim$(strA)
-
If Len(strT) = 0 Then Exit Sub
-
-
strB = ""
-
'---Dejar sólo los números... &
-
For i = 1 To Len(strA)
-
If InStr(cNUMEROS, Mid$(strA, i, 1)) Then
-
strB = strB + Mid$(strA, i, 1)
-
End If
-
Next
-
strA = strB
-
a# = 0
-
Nif# = Val(strA)
-
Do
-
b# = Int(Nif# / 24)
-
c# = Nif# - (24 * b#)
-
a# = a# + c#
-
Nif# = b#
-
Loop While b# <> 0
-
b# = Int(a# / 23)
-
c# = a# - (23 * b#)
-
strA = Trim$(strT) + Mid$(cCADENA, c# + 1, 1)
-
Text2.Text = Mid$(cCADENA, c# + 1, 1)
-
End Sub
-
-
Private Sub Command1_Click()
-
Call CalculaNIF(Text1.Text)
-
End Sub
-
-
Private Sub Form_Activate()
-
Text1.SetFocus
-
End Sub
-
-
Private Sub Form_Load()
-
Me.ScaleMode = vbPixels
-
SetWindowPos Me.hwnd, HWND_TOPMOST, Me.ScaleLeft, _
-
Me.ScaleTop, Me.ScaleWidth, Me.ScaleHeight, 0
-
Move (Screen.Width - Width), (Screen.Height - Height) - 500
-
-
End Sub
-
-
Private Sub Text1_GotFocus()
-
Text1.SelStart = 0
-
Text1.SelLength = Len(Text1.Text)
-
End Sub
-
-
Private Sub Text1_KeyPress(KeyAscii As Integer)
-
'MsgBox KeyAscii
-
Select Case KeyAscii
-
Case 13
-
Command1_Click
-
Text1_GotFocus
-
Exit Sub
-
Case 8
-
Case 46
-
Case Else
-
If Not IsNumeric(Chr(KeyAscii)) Then
-
KeyAscii = 0
-
End If
-
End Select
-
End Sub
También podéis descargar desde aquí los ficheros fuente.
Vota este artículo:
Posts anterior y posterior:
Posts Relacionados:
- Previo: « Macro para calendario en Excel.
- Siguiente: Aplicacion Cliente WinSock de Visual Basic. »


Comentarios Recientes