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 - gbpacheco@gmail.com .
'
' 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 <noelsond@gmail.com> 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, gilberto@schiavinatto.com <
gilberto@schiavinatto.com> 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 usuarios+help@pt-br.libreoffice.org
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 usuarios+help@pt-br.libreoffice.org
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 usuarios+help@pt-br.libreoffice.org
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
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.