Just for the hell of it, esto lo hice el siglo pasado en office 4.3 por el 92-93
si justan tomenlo:
Verificaba un informe para el BCRA volcado a una planilla excel.
Daba totales de errores detectados.
ahi por el fondo esta la verificacion del CUIT
Sub Verific2587()
Range("A1").Activate
ActiveCell.Offset(4, 15) = "Gtias Rec."
ActiveCell.Offset(4, 16) = "Cont Gtia."
ActiveCell.Offset(4, 17) = "Prev. Deuda"
ActiveCell.Offset(4, 18) = "Prev. Gtias"
ActiveCell.Offset(4, 19) = "Dig. Verif"
Worksheets("Hoja1").Range("A6:O12000").Sort Key1:=Worksheets("Hoja1").Columns("A")
Range("A1").Activate
ActiveCell.Offset(5, 0).Activate
Dim RowCnt, CurRow As Integer
Dim d11, d10, d09, d08, d07, d06, d05, d04, d03, d02, d01 As Long
Dim e15, e16, e17, e18, e19 As Integer
Do Until ActiveCell.Value = ""
For CurRow = 0 To 99
If ActiveCell.Offset(CurRow, 0) = "" Then Exit For
Do Until ActiveCell.Offset(CurRow, 0) <> ActiveCell.Offset(CurRow + 1, 0)
For d01 = 2 To 14
If Not
IsNumeric(ActiveCell.Offset(CurRow, d01)) Then
ActiveCell.Offset(CurRow, d01) = 0
If Not
IsNumeric(ActiveCell.Offset(CurRow + 1, d01)) Then
ActiveCell.Offset(CurRow + 1, d01) = 0
Ac tiveCell.Offset(CurRow, d01) = ActiveCell.Offset(CurRow, d01) +
ActiveCell.Offset(CurRow + 1, d01)
If d01 = 12 Or d01 = 14 Then
&nbs p;
ActiveCell.Offset(CurRow, d01) = ActiveCell.Offset(CurRow, d01) / 2
End If
Next d01
ActiveCell(CurRow + 1).EntireRow.Delete
Loop
If (ActiveCell.Offset(CurRow, 2) + ActiveCell.Offset(CurRow, 3)) < _
(ActiveCell.Offset(CurRow, 5) + ActiveCell.Offset(CurRow, 6)) Then
ActiveCell.Offset(CurRow, 15).Value = "Error"
e15 = e15 + 1
End If
If ActiveCell.Offset(CurRow, 4) < _
(ActiveCell.Offset(CurRow, 7) + ActiveCell.Offset(CurRow, 8)) Then
ActiveCell.Offset(CurRow, 16).Value = "Error"
e16 = e16 + 1
End If
If (ActiveCell.Offset(CurRow, 2) + ActiveCell.Offset(CurRow, 3)) < _
ActiveCell.Offset(CurRow, 9) Then
ActiveCell.Offset(CurRow, 17).Value = "Error"
e17 = e17 + 1
End If
If ActiveCell.Offset(CurRow, 4) < ActiveCell.Offset(CurRow, 10) Then
ActiveCell.Offset(CurRow, 18).Value = "Error"
e18 = e18 + 1
End If
If Left(ActiveCell.Offset(CurRow, 0).Value, 3) <> 308 Then
d11 = Left(ActiveCell.Offset(CurRow, 0).Value, 1) * 5
d10 = Mid(ActiveCell.Offset(CurRow, 0), 2, 1) * 4
d09 = Mid(ActiveCell.Offset(CurRow, 0), 3, 1) * 3
d08 = Mid(ActiveCell.Offset(CurRow, 0), 4, 1) * 2
d07 = Mid(ActiveCell.Offset(CurRow, 0), 5, 1) * 7
d06 = Mid(ActiveCell.Offset(CurRow, 0), 6, 1) * 6
d05 = Mid(ActiveCell.Offset(CurRow, 0), 7, 1) * 5
d04 = Mid(ActiveCell.Offset(CurRow, 0), 8, 1) * 4
d03 = Mid(ActiveCell.Offset(CurRow, 0), 9, 1) * 3
d02 = Mid(ActiveCell.Offset(CurRow, 0), 10, 1) * 2
d01 = Right(ActiveCell.Offset(CurRow, 0), 1)
&nbs p;
If 0 <> ((d11 + d10 + d09 + d08 + d07 + d06 + d05 + d04 + d03 + d02 + d01) _
&nbs p; Mod 11) Then
ActiveCell.Offset(CurRow, 19).Value = "Error"
e19 = e19 + 1
End If
End If
Next CurRow
ActiveCell.Offset(CurRow, 0).Activate
Loop
ActiveCell.Offset(0, 15).Value = e15
ActiveCell.Offset(0, 16).Value = e16
ActiveCell.Offset(0, 17).Value = e17
ActiveCell.Offset(0, 18).Value = e18
ActiveCell.Offset(0, 19).Value = e19
End Sub