
Filtrar datos para entrar un DNI o NIF
Publicado por Ramon (9 intervenciones) el 13/06/2017 18:57:18
Buenas tardes, amigos;
Tengo 65 años y se me ha dado por VBA. No domino el tema y por eso recurro a vosotros. Mi problema es el siguiente:
Intento filtrar un DNI (8 caracteres) o NIE (7), para luego calcular la letra correspondiente, pero no me funciona. Si entro 7 caracteres con letra de prefijo va bien. Si entro 8 caracteres para dni va bien. El problema está cuando entran 7 para DNI u 8 caracteres para NIE.
Os dejo, mi pobre código por si alguien se quiere molestar para ayudarme. Muchas gracias por adelantado:
Tengo 65 años y se me ha dado por VBA. No domino el tema y por eso recurro a vosotros. Mi problema es el siguiente:
Intento filtrar un DNI (8 caracteres) o NIE (7), para luego calcular la letra correspondiente, pero no me funciona. Si entro 7 caracteres con letra de prefijo va bien. Si entro 8 caracteres para dni va bien. El problema está cuando entran 7 para DNI u 8 caracteres para NIE.
Os dejo, mi pobre código por si alguien se quiere molestar para ayudarme. Muchas gracias por adelantado:
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Private Sub CommandButton1_Click()
Sheets("Hoja1").Select
If Len(nif.Value) > 6 And Len(nif.Value) < 9 Then
Dim letra_final As String
Dim resto As Integer
Dim para_calculo As String
Do While True
If tipo = "NIE" And letra <> "" And Len(nif) = 7 Then
If letra = "X" Or letra = "x" Then
para_calculo = "0" + nif
End If
If letra = "Y" Or letra = "y" Then
para_calculo = "1" + nif
End If
If letra = "Z" Or letra = "z" Then
para_calculo = "2" + nif
End If
Exit Do
End If
If tipo = "DNI" And Len(nif) = 8 Then
letra = ""
para_calculo = nif
nif.SetFocus
Exit Do
End If
Loop
'**********************************************************
resto = para_calculo Mod 23 + 1
nif = CStr(nif)
letra_final = Mid("TRWAGMYFPDXBNJZSQVHLCKE", resto, 1)
nif.Value = letra + nif + letra_final
'**********************************************************
Range("a1000000").End(xlUp).Offset(1, 0).Select
ActiveCell.Value = nif.Value
ActiveCell.Offset(0, 1) = arxiu.Value
ActiveCell.Offset(0, 2) = alta.Value
ActiveCell.Offset(0, 3) = genere.Value
ActiveCell.Offset(0, 4) = nom.Value
ActiveCell.Offset(0, 5) = cognom1.Value
ActiveCell.Offset(0, 6) = cognom2.Value
ActiveCell.Offset(0, 7) = frontoffice.Value
ActiveCell.Offset(0, 8) = backoffice.Value
ActiveCell.Offset(0, 9) = inter.Value
ActiveCell.Offset(0, 10) = irer.Value
ActiveCell.Offset(0, 11) = c_nom.Value
ActiveCell.Offset(0, 12) = c_potencia.Value
ActiveCell.Offset(0, 13) = c_regulat.Value
ActiveCell.Offset(0, 14) = c_bosocial.Value
ActiveCell.Offset(0, 15) = c_discrimina.Value
ActiveCell.Offset(0, 16) = c_taigua.Value
ActiveCell.Offset(0, 17) = c_tgas.Value
Else
MsgBox "El Nif ha de tener 7 u 8 cifras "
nif.Value = ""
' nif.SetFocus
End If
tipo.Value = ""
letra.Value = ""
nif.Value = ""
arxiu.Value = ""
alta.Value = ""
genere.Value = ""
nom.Value = ""
cognom1.Value = ""
cognom2.Value = ""
frontoffice.Value = ""
backoffice.Value = ""
inter.Value = ""
irer.Value = ""
c_nom.Value = ""
c_potencia.Value = ""
c_regulat.Value = ""
c_bosocial.Value = ""
c_discrimina.Value = ""
c_taigua.Value = ""
c_tgas.Value = ""
tipo.SetFocus
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub UserForm_initialize()
' Me.Width = 540
' Me.Height = 270
' Me.Width = Application.Width
' Me.Height = Application.Height
tipo.AddItem "DNI"
tipo.AddItem "NIE"
letra.AddItem "X"
letra.AddItem "Y"
letra.AddItem "Z"
genere.AddItem "HOMBRE"
genere.AddItem "MUJER"
genere.AddItem "OTROS"
End Sub
Valora esta pregunta


0