Olá Gilberto!
Reforço as recomendações do Noelson sobre uma verificação detalhada da
ajuda, em especial das funções de run-time e dos fundamentos da linguagem
Basic.
Há algum tempo tive uma necessidade parecida e utilizei a mesma solução que
você encontrou. Veja o exemplo do meu código ao final do e-mail. Espero que
seja útil para você.
Você verá que a função utilizada, em vez de 'Int()', é a 'Val()'. No seu
caso, se você precisar de um SE(), use uma construção If/then/else/endif. Os
conceitos básicos para isso estão na ótima documentação sugerida pelo
Noelson.
Para usar a função do exemplo como uma função do Calc, simplesmente copie o
código para dentro da biblioteca Standard, volte ao Calc e use, em uma
célula qualquer, o exemplo:
=CalculaDV("02113008919705040001")
O resultado deverá ser 89.
Abraço,
Gustavo Pacheco.
'--------------- Início cópia --------------------
Function CalculaDV(strNumProc as String) as integer
'
'*****************************************************************************
' Função que calcula o dígito verificador do novo número de processo tipo
CNJ.
' Recebe como parâmetro uma string contendo o número de processo apenas com
' dígitos numéricos (sem pontos, traços ou barras).
'
' Exemplo de chamada:
' CalculaDV("02113008919705040001")
'
' Resulta em: 89
'
' Criada por Gustavo B. Pacheco - [email protected] .
'
' Modificações:
' sem modificações até o momento.
'
'*****************************************************************************
'
Dim intR1, intR2, intR3, intDD as integer
strNNNNN = Left(strNumProc, 7)
strAAAA = Mid(strNumProc, 10, 4)
strJ = Mid(strNumProc, 14,1)
strTR = Mid(strNumProc, 15,2)
strOOOO = Right(strNumProc, 4)
numVal = Val(strNNNNN & strAAAA & strJ & strTR & strOOOO & "00")
intR1 = (Val(strNNNNN) mod 97)
intR2 = (Val(intR1 & strAAAA & strJ & strTR) mod 97)
intR3 = (Val(intR2 & strOOOO & "00") mod 97)
intDD = 98 - intR3
CalculaDV = intDD
End function
'--------------- fim cópia --------------------
Em 25 de abril de 2011 14:19, Noelson Duarte <[email protected]> escreveu:
> Olá Gilberto,
>
> A ajuda on-line do LibreOffice contempla a grande maioria das funções do
> BASIC, inclusive com exemplos de uso.
>
> Nos links abaixo você encontrará mais informações (em português) sobre
> macros, funções do usuário, BASIC e API do LibreOffice.
>
> http://www.broffice.org/proj_macros
>
> http://www.broffice.org/?q=docs_prog
>
> http://www.broffice.org/files/programando_broo.odt
>
> http://www.broffice.org/files/iooobasic_v2.zip
>
> Att.
>
> --
> Noelson
>
> Em 25 de abril de 2011 11:01, [email protected] <
> [email protected]> escreveu:
>
> > Necessito de mais informações
> >
> > Não consegui descobrir quais funções (do BrOffice - ex. INT(x) pode)
> podem
> > ser usadas no Basic. Aonde posso descobrir quais são possiveis de uso, e
> > como usa-las (parametros / modo de uso).
> >
> > Depois que descobrir como usa-las pode deixar que vou futicar até travar
> o
> > micro.
> >
> > Só um exemplo do que estou tentando fazer
> > Esta função ira conferir a digitação do código de produto
> > Utilizando Digito Virificador Modulo 11
> > Depois de tentar montar em uma só instrução, descobri que
> > o máximo de digitos por linha é 512.
> >
> > Depois de uns cafés, descobri que podia "fatiar" a função principal.
> >
> > Function DIGI6(a)
> > DIGI61 = (INT(a/10^5))
> > DIGI62 = (INT(a/10^4))-(INT(INT(a/10^4)/10))*10
> > DIGI63 = (INT(a/10^3))-(INT(INT(a/10^3)/10))*10
> > DIGI64 = (INT(a/100))-(INT(INT(a/100)/10))*10
> > DIGI65 = (INT(a/10))-(INT(INT(a/10)/10))*10
> > DIGI66 = (DIGI61*6)+(DIGI62*5)+(DIGI63*4)+(DIGI64*3)+(DIGI65*2)
> > 'DIGI6 = SE(INT(DIGI66/11)+1)*11-DIGI66>9 ValorEntão 0 ValorSenão
> > (INT(DIGI66/11)+1)*11-DIGI66) End SE
> > End Function
> >
> > Não esta completa não sei com usar a condicional "se"
> > A intenção é, quando for digitado codigo errado,
> > mostre a mensagem que produto não existe, ou algo parecido.
> > O uso dela esta condicionado com codigo de 5 digitos e 1 dv - ex.
> 29845-0.
> >
> > Aguardo alguma Luz no tunel
> > Obrigado
> > Gilberto Schiavinatto
> >
> > Ps. Se a maneira de postar não for essa, queiram por gentileza me
> > instruir....
> >
> > --
> > Unsubscribe instructions: E-mail to [email protected]
> > Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
> > List archive: http://listarchives.libreoffice.org/pt-br/usuarios/
> > All messages sent to this list will be publicly archived and cannot be
> > deleted
> >
> >
>
> --
> Unsubscribe instructions: E-mail to [email protected]
> Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
> List archive: http://listarchives.libreoffice.org/pt-br/usuarios/
> All messages sent to this list will be publicly archived and cannot be
> deleted
>
>
--
Unsubscribe instructions: E-mail to [email protected]
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/pt-br/usuarios/
All messages sent to this list will be publicly archived and cannot be deleted