Calcular los Dígitos de control desde Excel VBA
En este ejemplo presentamos un ejemplo de marcado VBA para calcular los dígitos de control de una cuenta bancaria española.
¿Qué son los dígitos de control?
Las cuentas bancarias españolas consisten de 4 grupos de dígitos. Los dígitos de control verifican los códigos de Entidad y Oficina (el primer dígito), y el Número de Cuenta (el segundo dígito). El algoritmo para calcular los dígitos de control se define en Norma bancaria 34 de AEB (Asociación Española de Banca).
Tarea
Queremos un programa que nos calcule los dígitos de control de una cuenta.
Un ejemplo de cuenta
0123 - 4567 - xx - 0123456789
| Entidad | 0123 |
| Oficina | 4567 |
| Dígitos de control | xx |
| Cuenta | 0123456789 |
En el ejemplo arriba, los dígitos de control serían 81.
Empezamos
Abrimos un libro nuevo. Formateamos las celdas B3:E3 a TEXTO.

Crear el módulo
Entra a Herramientas - Macros - Editor VBA. A la izquierda ves (si no lo ves CTRL+R) algo como "ProyectoVBA (Tu libro). Marca ese proyecto. Insertar - Módulo.
Doble click en el módulo nuevo, y a la derecha sale un espacio blanco, es para el código.
Herramientas - Referencias. Marca Microsoft ActiveX DataObjects x.x Library.
Ahora cierras el editor VBA, vuelves a Excel. Guardamos el libro.
El código
Sub DC_check() Dim Bank As String Dim Office As String Dim DC As String Dim Account As String Dim BankOffice As String Dim Valor1, Valor2, Valor3, Valor4, Valor5 DIm Valor6, Valor7, Valor8, Valor9, Valor10 Dim TestValue1 As Integer Dim TestValue2 As Integer Dim TestValueDC As Integer '--------------------------------------------------- 'recoger el número de cuenta Bank = Range("B3").Text Office = Range("C3").Text DC = Range("D3").Text Account = Range("E3").Text BankOffice = Bank & Office '--------------------------------------------------- 'evaluar DC (1) Valor1 = (Mid(BankOffice, 1, 1) * 4) Valor2 = (Mid(BankOffice, 2, 1) * 8) Valor3 = (Mid(BankOffice, 3, 1) * 5) Valor4 = (Mid(BankOffice, 4, 1) * 10) Valor5 = (Mid(BankOffice, 5, 1) * 9) Valor6 = (Mid(BankOffice, 6, 1) * 7) Valor7 = (Mid(BankOffice, 7, 1) * 3) Valor8 = (Mid(BankOffice, 8, 1) * 6) TestValue1 = Valor1 + Valor2 + Valor3 + Valor4 + _ Valor5 + Valor6 + Valor7 + Valor8 TestValue1 = (TestValue1 Mod 11) TestValue1 = 11 - TestValue1 If TestValue1 = 10 Then TestValue1 = 1 If TestValue1 = 11 Then TestValue1 = 0 '--------------------------------------------------- 'evaluar DC (2) Valor1 = (Mid(Account, 1, 1) * 1) Valor2 = (Mid(Account, 2, 1) * 2) Valor3 = (Mid(Account, 3, 1) * 4) Valor4 = (Mid(Account, 4, 1) * 8) Valor5 = (Mid(Account, 5, 1) * 5) Valor6 = (Mid(Account, 6, 1) * 10) Valor7 = (Mid(Account, 7, 1) * 9) Valor8 = (Mid(Account, 8, 1) * 7) Valor9 = (Mid(Account, 9, 1) * 3) Valor10 = (Mid(Account, 10, 1) * 6) TestValue2 = Valor1 + Valor2 + Valor3 + Valor4 + Valor5 + _ Valor6 + Valor7 + Valor8 + Valor9 + Valor10 TestValue2 = (TestValue2 Mod 11) TestValue2 = 11 - TestValue2 If TestValue2 = 10 Then TestValue2 = 1 If TestValue2 = 11 Then TestValue2 = 0 '--------------------------------------------------- 'reconstituir las dos cifras del DC TestValueDC = TestValue1 & TestValue2 'evaluar DC completo If TestValueDC = DC Then Test = True MsgBox "Correcto." Else Test = False MsgBox "DC no corresponde a esta cuenta." & vbCrLf & _ "[en este caso DC sería " & TestValueDC & ".]", vbOKOnly, vbInformation End If '--------------------------------------------------- End Sub
Ejecutar macro
Para ejecutar esta macro entras a Herramientas - Macros. Allí encontrarás la macro "Conectar_Excel_ADO". Marca esta, y "Ejecutar".



