[tutorial] vba macro - funçoes e acessar celula (libreoffice

Postagem de conteúdo sobre programação basic, visual basic e visual basic application e visual basic script
Post Reply
User avatar
Kodo no Kami
Admin
Admin
Posts: 688
Joined: Fri Jan 02, 2015 1:56 pm
Contact:

[tutorial] vba macro - funçoes e acessar celula (libreoffice

Post by Kodo no Kami » Mon Oct 17, 2016 6:18 am

bom galera no ultimo tutorial eu ia colocar isso mais ja passava das 2:00am entao vou fazer esse separado, para começar criamos uma macro como o tutorial anterior

Image

agora criamos nossa funçao fora do escopo do sub main, uma função deve ter a palavra function seguido do nome que pode ser qualquer um, e o escopo termina com end function

Code: Select all

REM  *****  BASIC  *****

Sub Main
End Sub

Function ftsfuncao
End Function
salvamos e pronto a função ta pronta embora ela nao faça nada por enquanto, para executa ela basta fazer como o tutorial anterior so escolhendo a nossa função ou usar a aba de funçoes do libreoffice para usar ela basta aperta na celular que voce quer manipular depois digitar na aba de funçoes ou na propria celula (tem que colocar o simbolo de igual seguido do nome da funçao no caso aqui é =ftsfuncao() )

Image

para a gente retornar um valor da nossa função para uma celula basta atribuir um valor para ela dentro do escopo (isso deve ser sempre no final devido a funçao ser finalizada quando acha o retorno)

Code: Select all

REM  *****  BASIC  *****

Sub Main
End Sub

Function ftsfuncao
   ftsfuncao = 315
End Function
Image

no exemplo anterior qualquer lugar que eu usar a minha funçao vai virar o valor 315, agora vamos passar argumento para ela deixando essa bagaça mais dinamica *-* , para isso temos que criar variaveis para receber os argumentos para criar basta coloca elas entre parenteses depois do nome da função (no caso criei uma variavel com o nome valor e depois atribuir essa variavel ao retorno assim retornando o numero que vou passar)

Code: Select all

REM  *****  BASIC  *****

Sub Main
End Sub

Function ftsfuncao(valor)
   ftsfuncao = valor
End Function
la na aba de funçoes ou na celula basta passar o argumento que vamos passar para a nossa função

Image

podemos qualquer coisa antes do retorno, nesse exemplo so vou dividir o valor por 2 e depois retornar o resultado (lembrando que o basic da pra fazer muita coisa alem de contas aritimeticas, existem funçoes muito legais e as que nao existe voce pode criar ^^ )

Code: Select all

REM  *****  BASIC  *****

Sub Main

End Sub

Function ftsfuncao(valor)
   total = valor / 2
   ftsfuncao = total
End Function
Image

para passar mais de um argumento na função separamos por virgula, mais na aba de funçoes separamos por ponto e virgula (lembrando tem que ter a mesma quantidade de argumentos nas funçoes e de valor passado)

Code: Select all

REM  *****  BASIC  *****

Sub Main

End Sub

Function ftsfuncao(valor,valor2)
   total = valor + valor2
   ftsfuncao = total
End Function
Image

ate agora so usamos tipo inteiro porem é possivel qualquer tipo de dados ate string ou tipo booleano entre outros

Code: Select all

REM  *****  BASIC  *****

Sub Main

End Sub

Function ftsfuncao(nome)
   texto = "seu nome é " & nome
   ftsfuncao = texto
End Function
Image


tambem é possivel passar como argumento valor que esta em uma celula bastando digita o codigo dela, um exemplo seria o A1 (o legal de fazer isso que basta mudar um dos valores das celulas que a função atualiza automaticamente)

Image

agora para fazer o basic acessar uma celula sem passar o valor por argumento é um pouco mais complicado, para fazer isso temos que fazer pelo menos 3 passos que seria instanciar o objeto ThisComponent

Code: Select all

REM  *****  BASIC  *****

Sub Main
End Sub

Function ftsfuncao
   objeto = ThisComponent
End Function
depois de instaciar temos acessar o sheet pelo objeto que no caso o sheet é o Sheet1 (o valor começa no 0 entao Sheet1 = 0)

Code: Select all

REM  *****  BASIC  *****

Sub Main
End Sub

Function ftsfuncao
   objeto = ThisComponent
   acessosheet = objeto.Sheets(0)
End Function
agora usamos o GetCellByPosition passamos como argumento para ele as duas posição que tambem começa no 0 (A1 = 0,0), e por fim usamos o atributo string para pegar o valor (podemos atribuir para ele tambem assim de vez pegar o valor ele atribui nele)

Code: Select all

REM  *****  BASIC  *****

Sub Main
End Sub

Function ftsfuncao
   objeto = ThisComponent
   acessosheet = objeto.Sheets(0)
   valor = acessosheet.GetCellByPosition(0,0).string
   ftsfuncao = valor
End Function
Image

bom galera é isso ^^

by kõdo no kami
Image

que desagradavel ~ mirai kuriyama

User avatar
51M0N
Admin
Admin
Posts: 869
Joined: Fri Jan 02, 2015 2:06 pm

Re: [tutorial] vba macro - funçoes e acessar celula (libreof

Post by 51M0N » Mon Oct 17, 2016 10:04 am

massa mano, utilizando vba macro.
Image
"Você, eu, nem ninguém vai bater tão duro como a vida. Mas não se trata de bater duro. Se trata de quanto você aguenta apanhar e seguir em frente (...). É assim que se consegue vencer." by Rocky Balboa

Post Reply

Return to “Basic / VB”