Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
luizclaudio
Creator
Creator

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

Labels (1)
  • Macro

1 Solution

Accepted Solutions
Anonymous
Not applicable

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

View solution in original post

11 Replies
Anonymous
Not applicable

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

luizclaudio
Creator
Creator
Author

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

Anonymous
Not applicable

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
Creator
Creator
Author

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

Anonymous
Not applicable

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



Anonymous
Not applicable

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

Anonymous
Not applicable

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
Creator
Creator
Author

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
Creator
Creator
Author

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