Criando uma função no OpenOffice.org Calc

Em um artigo anterior comentei sobre algumas funções internas aplicáveis à estatística. Pois então, apesar da grande quantidade de funções disponibilizadas no OpenOffice Calc, pode ser que em algum momento você precise criar uma função específica. Logo...

[ Hits: 33.207 ]

Por: jorge luiz vidal soares em 13/10/2009


Introdução



Neste artigo vou procurar mostrar o caminho das pedras para a construção de uma função no OpenOffice.org Calc, vou utilizar um conteúdo de álgebra que é uma situação matemática bem simples e que vai servir para ilustrar todo o artigo. Trata-se do cálculo das raízes de uma equação do segundo grau, aplicando a fórmula de Bhaskara.

Temos à nossa disposição um editor de macros que vem junto com o pacote OpenOffice.org Calc e que funciona com uma linguagem de programação muito simples, o Basic, mas que produz grandes resultados quando utilizada com direcionamento adequado. Vou mostrar como se cria uma função a partir de um macro comando, em um nível bem inicial.

Construir um macro comando pode ser uma tarefa fácil se você possuir uma boa lógica na hora de programar e saber bem aonde quer chegar. Estes macros comandos são muito funcionais nas tarefas corriqueiras que necessitam de uma intensa repetição de comandos. Vamos compreender o que é uma função e um procedimento o decorrer do exercício.

Muitos utilizam o termo "uma" macro, eu particularmente discordo e uso o termo "um" macro, pois trata-se de "um" comando "grande" ou grupo de comandos executados em processo batch (lote).

Preparando o ambiente de desenvolvimento

Primeiramente vamos iniciar o OpenOffice.org Calc e gravar o nosso arquivo com o nome de BHASKARA, o que pode ser feito em uma planilha vazia ou em uma planilha que você esteja desenvolvendo, até chegar o momento da necessidade de construir uma função que você não encontrou no pacote fornecido.

Vamos lá então! Dê o comando:

FILE > SAVE > BHASKARA

Vamos agora acionar o editor de macros. Dê o comando:

TOOLS > MACROS > ORGANIZE MACROS > OPENOFFICE.ORG BASIC...

Veja o comando na figura baixo:
Linux: Criando uma função no OpenOffice.org Calc

Iniciando a criação do módulo

Você deverá estar vendo uma janela parecida com a que está mostrada abaixo. Nesta janela, clique sobre o nome que você salvou o seu arquivo (observe à esquerda), então clique na opção "Standard". Agora clique no botão NEW, como mostra a figura abaixo:
Linux: Criando uma função no OpenOffice.org Calc
Ao surgir a caixa de diálogo, digite o nome do módulo, no nosso caso use um nome sugestivo.

Digite: ModuloBhaskara

Observe que você já está na janela de edição de procedimentos e funções, isto é, um ambiente de programação em linguagem Basic. Note também que o nome da função que criamos, expressa com muita clareza o que estamos fazendo. Um erro comum em programadores sem experiência é sair nomeando procedimentos e funções, variáveis e arquivos sem um certo rigor. Isto, mais tarde, causa sérias dores de cabeça. Bom, voltando ao nosso assunto!

Existe uma procedure (procedimento), a principal do programa, chamada Sub Main, não vamos entrar no detalhe desta Sub neste artigo. A nossa Function (função) ficará digitada abaixo dela, assim como qualquer outra função que desejarmos criar para nossa coleção. Observe a tela abaixo:
Linux: Criando uma função no OpenOffice.org Calc
Vamos começar!

Primeiro entender o que desejamos fazer: CALCULAR RAÍZES DA EQUAÇÃO DO 2° GRAU POR BHASKARA.

O que vamos precisar?

Da fórmula:
Linux: Criando uma função no OpenOffice.org Calc
De uma equação para testar:
Linux: Criando uma função no OpenOffice.org Calc
Saber quem são os coeficientes e o termo independente: a, b e c respectivamente 1, 2 e -15, da equação acima. No seu editor Basic, já aberto, digite o código abaixo:
Linux: Criando uma função no OpenOffice.org Calc
Se estiver difícil de ver, segue abaixo o código (aproveita, copia e cola! rsrs):

Function Bhaskara() As String
Dim doubleA, doubleB, doubleC, doubleDelta, doubleX1, doubleX2 As Double
doubleA = Val(InputBox("Digite o coeficiente A:"))
doubleB = Val(InputBox("Digite o coeficiente B:"))
doubleC = Val(InputBox("Digite o termo C:"))
doubleDelta=Val((doubleB*doubleB)-(4*doubleA*doubleC))

   if doubleDelta < 0 then
      print "A equação não tem solução real !"
   exit function
   endif

doubleX1=(-doubleB+sqr(doubleDelta))/2*doubleA
doubleX2=(-doubleB-sqr(doubleDelta))/2*doubleA

msgbox doubleX1
msgbox doubleX2

End function

    Próxima página

Páginas do artigo
   1. Introdução
   2. Testando e concluindo
Outros artigos deste autor

Filtragem de registros em bases de dados no OpenOffice.org Calc

Básico do OpenOffice.org Calc

Introdução aos trabalhos com bases de dados no OpenOffice.org Calc

Criando formulário e subtotais no OpenOffice.org Calc

Validação de dados no OpenOffice.org Calc

Leitura recomendada

Configuração do OpenOffice para o português do Brasil (pt-BR) a partir de uma instalação do BrOffice

Validação de dados no OpenOffice.org Calc

Básico do OpenOffice.org Calc

Prevenindo problemas com impressoras via Samba no Windows

Dominando o BrOffice.org: Tabelas no Writer; Uso do Navegador de Objetos

  
Comentários
[1] Comentário enviado por hideoux em 13/10/2009 - 19:37h

Legal demais!
Precisamos quebrar o mito de que apenas o excel presta...
Eu utilizo muito Calc. Para tudo, e olha que não são coisas nada simples...

Quanto mais tutoriais tivermos com coisas avançadas, melhor!
Abraço,
Hideo

[2] Comentário enviado por diegofsouza em 13/10/2009 - 20:19h

Muito bom... gostei da artigo!
Vlws

[3] Comentário enviado por rocarva em 24/11/2009 - 15:41h

Nossa o Calc 3.1 faz coisas em basic e python, onde eu consigo mais coisas para estudar ???

[4] Comentário enviado por JediMai em 29/09/2020 - 16:15h

E tem como criar uma função em que os valores sejam buscados diretamente de determinadas células da planilha, seja em endereços fixos, ou endereços relativos?
Tipo, eu inserir a função em uma célula H1, por exemplo, e a formula buscar os valores nas três células das colunas anteriores, etc?

[5] Comentário enviado por jlvidals em 08/10/2020 - 08:27h


[4] Comentário enviado por JediMai em 29/09/2020 - 16:15h

E tem como criar uma função em que os valores sejam buscados diretamente de determinadas células da planilha, seja em endereços fixos, ou endereços relativos?
Tipo, eu inserir a função em uma célula H1, por exemplo, e a formula buscar os valores nas três células das colunas anteriores, etc?



Tem como sim!
Basta vc utilizar o mesno raciocinio da função deste artigo. Se for buscar valores pode operá-los na própria função (soma, subtração, etc) se for buscar textos pode concatenar o resultado na própria célula.

[6] Comentário enviado por Telvabjr em 27/01/2021 - 11:22h

Fiz o meu assim:
Function Bhaskara(doubleA, doubleB, doubleC) As String
Dim doubleDelta, doubleX1, doubleX2 As Double
doubleDelta=Val((doubleB*doubleB)-(4*doubleA*doubleC))
if doubleDelta < 0 then
print "A equação não tem solução real !"
exit function
endif
doubleX1=(-doubleB+sqr(doubleDelta))/2*doubleA
doubleX2=(-doubleB-sqr(doubleDelta))/2*doubleA
msgbox("X1 = " + doubleX1 + "; X2 = " + doubleX2)
End function


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts