Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
luizclaudio
Contributor

Execução de macro

Boa tarde

Estou me aventurando com minha primeira macro.

Por ser a primeira ainda estou me batendo um bocado...rsrs

Criei a macro no editor...

Coloquei a execução ao carregar (e tentei outras também)

O módulo de segurança requerido está assinalado como "Acesso ao Sistema"

Segurança local atual está assinada como "Permitir acesso ao sistema".

Acontece que quando carrega o documento, é aberta a janela do editor de macros e a partir daí não sei o que está acontecendo.

O que falta fazer?

Luiz Cláudio

Tags (1)
1 Solution

Accepted Solutions
rvsilvestre
Contributor III

Re: Execução de macro

Graph.AddExpression "Column(3)/Qt_Parcelas"


Aqui não seria


Graph.AddExpression "Column(3)/ "&Parcelas


??


do mesmo campo que vc ta usando no while Parcelas = Parcelas + 2


não entendi esse Qt_parcelas

11 Replies
rvsilvestre
Contributor III

Re: Execução de macro

Se abre o Editor é porque ta dando algum erro, posta a macro ai

luizclaudio
Contributor

Re: Execução de macro

Segue a macro

Sub Gera_expressao

set Graph = ActiveDocument.Sheets("CH74").CreateLineChart

Graph.AddDimension "$(Qt_Parcelas)"

Graph.AddExpression "Column(3)/Qt_Parcelas"

Qt_Parcelas = Qt_Parcelas + 2

if Qt_Parcelas > 12 then exit Sub

End Sub

rvsilvestre
Contributor III

Re: Execução de macro

Ta calma, o que você quer fazer com essa macro?  Se quiser postar o qvw fica mais fácil de achar o erro.

a dimensão ali é uma variável? porque vc ta trazendo o column(3) , nao é só o Qt_Parcelas que te interessa nesse caso? .. e porque aquele "then exit Sub" ? era pra acabar ali?

*Uma dica , eu sempre uso o : Msgbox("teste") como debug.. ex:

Sub Gera_expressao

set Graph = ActiveDocument.Sheets("CH74").CreateLineChart

Graph.AddDimension "$(Qt_Parcelas)"

Graph.AddExpression "Column(3)/Qt_Parcelas"

Msgbox("teste")

Qt_Parcelas = Qt_Parcelas + 2

if Qt_Parcelas > 12 then exit Sub

End Sub

Se aparacer a mensagem "teste" numa janelinha na tela, antes dele voltar para o script da macro, quer dizer que o erro é pra baixo disso... isso sempre me ajudou bastante, nunca conseguir usar aquele debug la haha.

luizclaudio
Contributor

Re: Execução de macro

A column(3) tem o valor do débito...

minha intenção é gerar outras expressões onde o valor do débito é calculado para mais parcelas.

fixei em 12 apenas para testar.

E agora percebi que não preciso adicionar a dimensão.

por isso retirei a linha Graph.AddDimension "$(Qt_Parcelas)"

A dica do msgbox valeu... o debug realmente não funciona...rsrs

e já está dando erro na primeira linha

set Graph = ActiveDocument.Sheets("CH74").CreateLineChart


Luiz Cláudio

rvsilvestre
Contributor III

Re: Execução de macro

voce quer criar outras expressões no mesmo gráfico, ou criar um gráfico novo com essas outras expressões??


isso :

set Graph = ActiveDocument.Sheets("CH74").CreateLineChart


cria um novo gráfico de linhas e ta dando erro porque ali onde tem CH74 na verdade vc vai colocar o nome da aba onde vc vai criar o gráfico


Sub teste

set Graph = ActiveDocument.Sheets("Main").CreateLineChart

Graph.AddDimension "Cidade"

Graph.AddExpression "sum(vendas)"

end Sub


Aqui eu estou criando um gráfico na aba Main, com dimensão Cidade e expressão sum(vendas).



rvsilvestre
Contributor III

Re: Execução de macro

você pode adicionar varias expressões dai na criação desse gráfico, pra parcelas de 12, 24, 36 ... dai nao sei como voce vai definir isso

rvsilvestre
Contributor III

Re: Execução de macro

aaah e se vc quiser apenas incluir a expressão no gráfico ja pronto

set Graph = ActiveDocument.GetSheetObject( "CH74" )

Graph.AddExpression "sum(valor)"

luizclaudio
Contributor

Re: Execução de macro

Fiz alterações na macro

Sub Gera_expressao

Dim Parcelas

Parcelas = 4

set Graph = ActiveDocument.GetSheetObject("CH76")

set v = ActiveDocument.Variables("Qt_Parcelas")

While Parcelas <=12

Graph.AddExpression "Column(3)/Qt_Parcelas"

Parcelas = Parcelas + 2

v.SetContent Cstr(Parcelas),true

msgbox(Cstr(Parcelas))

Input = InputBox(i & " Type Q to quit")

if Input = "q" or Input = "Q" then exit sub

wend

End Sub

A variavel Qt_Parcelas teve que ser utilizada pois o calculo da dimensão estava se repetindo... estou atribuindo novo valor a ela e está funcionando.

Mas o problema agora é outro.

Quando executa a primeira vez é feito o calculo dividindo o total de column(3) por 4 (Qt_Parcelas)

Mas quando incluí outra expressão, o calculo é feito correto mas o valor da expressão anterior (dividido por 4) é alterado para o mesmo valor (dividido por 6).

luizclaudio
Contributor

Re: Execução de macro

Apenas para ampliar a questão...

Notei que ao retornar ao Qlikview, após o término da macro, todas as colunas assumem o último valor.

Ou seja, preciso encontrar uma forma de identificar o index da coluna que estou inserindo a expressão para que o cálculo afete apenas uma de cada vez.

Em resumo, vamos continuar a briga...rsrs