seja bem vindo ao forum eof, caso nao seja cadastrado se cadastre para poder visualizar todo o conteudo ^^

Participe do fórum, é rápido e fácil

seja bem vindo ao forum eof, caso nao seja cadastrado se cadastre para poder visualizar todo o conteudo ^^
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Você não está conectado. Conecte-se ou registre-se

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

Ir para baixo  Mensagem [Página 1 de 1]

Kodo no Kami

Kodo no Kami
master
master

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

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

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

Código:
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() )

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

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)

Código:
REM  *****  BASIC  *****

Sub Main
End Sub

Function ftsfuncao
   ftsfuncao = 315
End Function

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

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)

Código:
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

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

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 ^^ )

Código:
REM  *****  BASIC  *****

Sub Main

End Sub

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

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

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)

Código:
REM  *****  BASIC  *****

Sub Main

End Sub

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

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

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

Código:
REM  *****  BASIC  *****

Sub Main

End Sub

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

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]


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)

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

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

Código:
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)

Código:
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)

Código:
REM  *****  BASIC  *****

Sub Main
End Sub

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

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

bom galera é isso ^^

by kõdo no kami

https://endoffile.umforum.net

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos