CONVERTER FUN?ÃO JAVASCRIPT PARA VB/VBA

LCSMAGALHAES 08/10/2015 10:45:41
#452306
Bom dia pessoal!
Preciso de uma ajuda!

Preciso converter essas duas funções do DATASUS que servem para validação de Cartão SUS.

1 - A primeira é para cartões antigos que começam com os números 1 e 2
2 - A segunda é para os cartões mais recentes que começam com 7,8 e 9

------------------------------------------------------------------------------------------------
Rotina (JAVASCRIPT) de validação de Números que iniciam com “1” ou “2”
------------------------------------------------------------------------------------------------


function validaCNS(vlrCNS) {
// Formulário que contem o campo CNS
var soma = new Number;
var resto = new Number;
var dv = new Number;
var pis = new String;
var resultado = new String;
var tamCNS = vlrCNS.length;
if ((tamCNS) != 15) {
alert([Ô]Numero de CNS invalido[Ô]);
return false;
}
pis = vlrCNS.substring(0,11);
soma = (((Number(pis.substring(0,1))) * 15) +
((Number(pis.substring(1,2))) * 14) +
((Number(pis.substring(2,3))) * 13) +
((Number(pis.substring(3,4))) * 12) +
((Number(pis.substring(4,5))) * 11) +
((Number(pis.substring(5,6))) * 10) +
((Number(pis.substring(6,7))) * 9) +
((Number(pis.substring(7,8))) * 8) +
((Number(pis.substring(8,9))) * 7) +
((Number(pis.substring(9,10))) * 6) +
((Number(pis.substring(10,11))) * 5));
resto = soma % 11;
dv = 11 - resto;
if (dv == 11) {
dv = 0;
}
if (dv == 10) {
soma = (((Number(pis.substring(0,1))) * 15) +
((Number(pis.substring(1,2))) * 14) +
((Number(pis.substring(2,3))) * 13) +
((Number(pis.substring(3,4))) * 12) +
((Number(pis.substring(4,5))) * 11) +
((Number(pis.substring(5,6))) * 10) +
((Number(pis.substring(6,7))) * 9) +
((Number(pis.substring(7,8))) * 8) +
((Number(pis.substring(8,9))) * 7) +
((Number(pis.substring(9,10))) * 6) +
((Number(pis.substring(10,11))) * 5) + 2);
resto = soma % 11;
dv = 11 - resto;
resultado = pis + [Ô]001[Ô] + String(dv);
} else {
resultado = pis + [Ô]000[Ô] + String(dv);
}
if (vlrCNS != resultado) {
alert([Ô]Numero de CNS invalido[Ô]);
return false;
} else {
alert([Ô]Numero de CNS válido[Ô]);
return true;
}
}



-----------------------------------------------------------------------------------------------------
Rotina (JAVASCRIPT) de validação de Números que iniciam com “7” ou “8” ou [Ô]9[Ô]
--------------------------------------------------------------------------------------------------------


function ValidaCNS_PROV(Obj)
{
var pis;
var resto;
var dv;
var soma;
var resultado;
var result;
result = 0;

pis = Obj.value.substring(0,15);

if (pis == [Ô][Ô])
{
return false
}

if ( (Obj.value.substring(0,1) != [Ô]7[Ô]) && (Obj.value.substring(0,1) != [Ô]8[Ô]) && (Obj.value.substring(0,1) != [Ô]9[Ô]) )
{
alert([Ô]Atenção! Número Provisório inválido![Ô]);
return false
}

soma = ( (parseInt(pis.substring( 0, 1),10)) * 15)
+ ((parseInt(pis.substring( 1, 2),10)) * 14)
+ ((parseInt(pis.substring( 2, 3),10)) * 13)
+ ((parseInt(pis.substring( 3, 4),10)) * 12)
+ ((parseInt(pis.substring( 4, 5),10)) * 11)
+ ((parseInt(pis.substring( 5, 6),10)) * 10)
+ ((parseInt(pis.substring( 6, 7),10)) * 9)
+ ((parseInt(pis.substring( 7, 8),10)) * 8)
+ ((parseInt(pis.substring( 8, 9),10)) * 7)
+ ((parseInt(pis.substring( 9,10),10)) * 6)
+ ((parseInt(pis.substring(10,11),10)) * 5)
+ ((parseInt(pis.substring(11,12),10)) * 4)
+ ((parseInt(pis.substring(12,13),10)) * 3)
+ ((parseInt(pis.substring(13,14),10)) * 2)
+ ((parseInt(pis.substring(14,15),10)) * 1);

resto = soma % 11;

if (resto == 0)
{
return true;
}
else
{
alert([Ô]Atenção! Número Provisório inválido![Ô]);
return false;
}
}



Se precisar de números válidos para testes segue aqui
----------------------------------------------------------------------


100875053790018
102246835400006

206046387730009
206755471690007

700403929112842
700500908041454

898002392643433
898002606360658

980016000257118
980016296787176


Ficarei muito grato se alguém puder me ajudar convertendo de preferência para VBA.
DS2T 08/10/2015 14:26:52
#452321
Não vou te dar mastigado porque iria dar um bom trabalho converter tudo isso. E não seria uma dúvida, e sim uma conversão completa de código...

Declaração de um inteiro em VBA:
Dim variavel as Integer
Declaracao de um decimal em VBA:
Dim variavel as Single


Função substring em VBA é Mid()

Conversão para inteiro é cInt()

% (pra pegar o resto) é Mod

e Alert é MsgBox()


Abraços!
Faça seu login para responder