Notifications
Clear all

VBE: Entendimento algumas funcionalidades

9 Posts
5 Usuários
0 Reactions
1,312 Visualizações
(@leonardo)
Posts: 81
Trusted Member
Topic starter
 

Olá,

Tenho uma dúvida que sempre me acompanhou desde que comecei a escrever alguns códigos em VBA.

Por que quando é digitada uma linha de código, "as vezes" aparece "as vezes" não aparece, uma janelinha de ajuda com os métodos ou propriedades do objeto?

Existe uma maneira de deixar "habilitada" esta ajuda no VBE?

 
Postado : 19/02/2016 1:10 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

leonardo,

Mande também um exemplo de quando não aparece.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 19/02/2016 3:21 pm
(@leonardo)
Posts: 81
Trusted Member
Topic starter
 

Olá Wagner Morel,

Segue um exemplo que não aparece a janelinha de ajuda no VBE.

 
Postado : 21/02/2016 8:37 am
fcarlosc
(@fcarlosc)
Posts: 453
Honorable Member
 

Olá amigo,
Normalmente quando você está inserindo um código, "Application.xxx" a janelinha vai aparecer à partir do ponto. Caso você use o "BackSpace" e para no ponto "." e depois continuar digitando, a janelinha não vai aparecer. Agora quando você usa o "BackSpace" e apaga antes do ponto e depois continua a digitar, a janelinha aparece novamente.
Acho que é isso.

att,

Francisco

 
Postado : 21/02/2016 12:14 pm
(@leonardo)
Posts: 81
Trusted Member
Topic starter
 

Olá fcarlosc,

Obrigado pelo retorno, porém, continua sem aparecer a janelinha de ajuda.

Tem uma maneira de deixar esta função ativa no VBE?.

No aguardo.

 
Postado : 22/02/2016 4:45 am
(@robo8268)
Posts: 73
Trusted Member
 

leonardo, ja pesquisei em fóruns americanos sobre isso, e a única resposta que eu tive, é que realmente o intellisense praticamente só aparece quando ele quer, geralmente quando usamos os principais objetos como application ou worksheets. E por incrivel que pareça o intellisense nunca aparece no objeto selection, que é um dos que eu mais utilizo. Quando ele não aparece eu pesquiso no pesquisador de objetos ou procuro quais as propriedades do objeto no Google mesmo. Infelizmente a Microsoft nunca arruma isso!

 
Postado : 22/02/2016 5:34 am
(@leonardo)
Posts: 81
Trusted Member
Topic starter
 

leonardo, ja pesquisei em fóruns americanos sobre isso, e a única resposta que eu tive, é que realmente o intellisense praticamente só aparece quando ele quer, geralmente quando usamos os principais objetos como application ou worksheets. E por incrivel que pareça o intellisense nunca aparece no objeto selection, que é um dos que eu mais utilizo. Quando ele não aparece eu pesquiso no pesquisador de objetos ou procuro quais as propriedades do objeto no Google mesmo. Infelizmente a Microsoft nunca arruma isso!

Caro robo8268,

É uma pena mesmo, pois é de grande ajuda esta funcionalidade no editor de macros.

Agradeço vosso retorno !

 
Postado : 22/02/2016 10:12 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Caro Leonardo,

Apesar do inconveniente, isso não é um problema do VBE e sim da maneira como é estruturado o modelo de objetos do aplicativo Excel. O problema é que algumas propriedades e métodos retornam um objeto genérico e não de um tipo específico. É o caso, por exemplo, da propriedade "Item" do objeto Worksheets, que acaba retornando o tipo "Object", em vez de retornar um tipo "Worksheet", assim perde-se o benefício da ajuda das ferramentas de construção de código após atingir o ponto: Workbooks(1).Worksheets(1).
[lembrando que Workbooks(1).Worksheets(1) é o mesmo que Workbooks.Item(1).Worksheets.Item(1)]

Também é o caso do ActiveSheet que vc descreveu. Devido ao tipo de objeto retornado ser um "Object", que é o tipo genérico para todos os objetos, as ferramentas de criação de instrução ("intelliSense") não conseguem determinar quais são as propriedades e métodos disponíveis.

Para contornar esse problema, pode-se explicitamente declarar uma variável de objeto que tenha o tipo específico "Worksheet" e então atribuir a essa variável a expressão que retorna uma referência para o objeto específico Worksheet. Aí vc usa a nova variável onde necessário. No seu caso,
Dim ws As Worksheet
Set ws = Application.ActiveSheet

No caso do "Selection" descrito pelo colega robo8268 já é outra história, pois se houver uma ou mais células selecionadas, Selection seria do tipo Range. Mas se estiver selecionado uma uma figura, gráfico, auto-forma, por exemplo, o objeto retornado por Selection deixa de ser Range e pode ser tipo Shape, Chart, etc. (Pode-se usar TypeName(Selection) para verificar se é "Range", "Picture", podendo inclusive ser "Nothing" etc.). Portanto não há como o Excel prever, nesse caso, o que estará selecionado quando o código for executado e portanto não poderia prever que propriedades ou métodos utilizar durante a escrita do código. Havendo certeza que de fato há uma Range selecionada pode-se fazer como descrito anteriormente e atribuí-la a uma variável (certificando-se que a planilha esteja ativada), por exemplo:

Dim rg as Range
Set rg = Selection

 
Postado : 23/02/2016 1:27 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Parabéns Edson! Muito Bom!

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 23/02/2016 1:49 pm