xltoday.net

EXCEL 2007 TABLAS Y GRAFICOS


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.

Dígitos de control

¿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

Entidad0123
Oficina4567
Dígitos de controlxx
Cuenta0123456789

En el ejemplo arriba, los dígitos de control serían 81.

Empezamos

Abrimos un libro nuevo. Formateamos las celdas B3:E3 a TEXTO.

Dígitos de control

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".