DONUT PROJECT 2018 - Excel - Ao Gravar Macro Altere o Método SELECT por RANGE


Se usar o gravador de Macros, talvez tenha notado que por default usa o método Select para referenciar explicitamente os objetos. Funciona, mas é lento e propenso a erros de tempo de execução. Se quiser começar usando o gravador de Macros, faça isso. 

 Série eBook Donut Projects: 

DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes



Depois revise o código resultante para os métodos Select e altere-os para referências Range. Por exemplo, o código de gravador a seguir aplica itálico a C4: C62:


Sub Macro1 ()
Faixa ("C4: C62"). Selecione
Selection.Font.Italic = True
End Sub

O gravador usa o método Select para identificar o intervalo. Depois de conhecer os métodos e as propriedades corretas - Font.Italic = True - poderá facilmente reescrever a Macro da seguinte maneira:

Sub Macro2 ()
Intervalo ("C4: C62"). Font.Italic = True
'Sheets ("Divisions"). Range ("C4: C62"). Font.Italic = True
'Range ("Tabela 3 [Espécie]"). Font.Italic = True
End Sub

Macro2 () realiza a mesma coisa com uma linha de código e sem selecionar o intervalo. Em resumo, você simplesmente combina as duas instruções e apaga o método Select e o objeto Selection. O código otimizado é mais eficiente e menos propenso a erros em tempo de execução.

As linhas comentadas mostram as referências de objeto Sheet e Table. A referência da planilha é necessária apenas se você desejar executar a Macro fora da planilha (Divisões, neste caso). A tabela faz referência à coluna de espécies em uma tabela chamada Table3.

Semelhante à seleção de intervalos e objetos para executar uma ação na planilha, uma referência explícita à planilha também atrasa o processamento. A solução é usar variáveis.

Por exemplo, o código a seguir faz referência à mesma célula (valor) seis vezes:

Função ReturnFeeSlow ()
Selecione o intervalo do caso ("I4")
Caso 1
ReturnFee = Range ("I4") * 10
Caso 2
ReturnFee = Range ("I4") * 20
Caso 3
ReturnFee = Range ("I4") * 30
Caso 4
ReturnFee = Range ("I4") * 40
Caso 5
ReturnFee = Range ("I4") * 50
Selecionar final
MsgBox ReturnFee, vbOKOnly
Função final

No mínimo, ReturnFeeSlow () faz duas referências explícitas a I4. Não está mudando o valor, ele está usando o valor em uma expressão simples. Nesse caso, é mais eficiente definir uma variável com o valor em I4 e usar a variável da seguinte forma:

Função ReturnFeeFast ()
Dim intFee As Integer
intFee = Range ("I4"). Valor
Selecione Case intFee
Caso 1
ReturnFee = intFee * 10
Caso 2
ReturnFee = intFee * 20
Caso 3
ReturnFee = intFee * 30
Caso 4
ReturnFee = intFee * 40
Caso 5
ReturnFee = intFee * 50
Selecionar final
MsgBox ReturnFee, vbOKOnly

Função final

Por favor, perdoe os exemplos inventados, mas o conceito é o ponto, não o propósito do código. Especificamente, os recursos de atualização integrados e as referências explícitas à planilha ou a um intervalo retardarão seu código. É certo que, com os sistemas rápidos de hoje, as macros simples nem sempre precisem de otimização. No entanto, se você estiver trabalhando com um aplicativo personalizado complexo, essas alterações fáceis de implementar deverão melhorar a eficiência.

Conheça também:

DONUT PROJECT 2021 - VBA Function:  Como Rastrear o Google Maps (Coordenadas Geográficas) no VBA Excel?

DONUT PROJECT 2021 - VBA Function:  Crie Acrônimos a partir de Strings de Texto

DONUT PROJECT 2021 - VBA Function:  Convertendo uma Matrix num Vetor - Convert Matrix to a Vector

DONUT PROJECT 2021 - VBA Function:  Como tornar o Formulário Transparente no MS Excel?

DONUT PROJECT 2021 - VBA Function:  Faça Buscas no Google a Partir da Célula do MS Excel - Search Google From a Cell

DONUT PROJECT 2021 - VBA Function:  Decompondo um Nome nas Dimensões de uma Matriz

DONUT PROJECT 2021 - VBA Function: Extraindo o Último Sobrenome de um Nome Completo ou a Última Palavra de uma Frase

DONUT PROJECT 2021 - VBA Function:  Extraindo o Segundo Nome de um Nome Completo ou a Segunda Palavra de uma Frase

DONUT PROJECT 2021 - VBA Function: Extraindo o Primeiro Nome ou  a Primeira Palavra de uma Frase


Série Piece of Cake


Séries Donut


Leia também:

eBook: Série DONUT PROJECT 2015: Projetos e Códigos de Visual Basic for Applications - Autor: André Luiz Bernardes

eBook: Série Top 10 Funções: Top 10 Funções VBA para o Microsoft Excel - Autor: André Luiz Bernardes

eBook: Série Funções Poderosas: 13 Funções Poderosas no MS Excel - Autor: André Luiz Bernardes

eBook: Série Visual Basic For Application: Criando Logs de acesso: Dicas e Códigos de Visual Basic for Applications - Autor: André Luiz Bernardes

eBook: Série VBA Tips: Rastrei seus Dashboards, Scorecards, Reports, Relatórios, Planilhas e Aplicações - Dicas e Códigos - Autor: André Luiz Bernardes

eBook: Série Data Science: Big Data, Como? - Autor: André Luiz Bernardes

eBook: Série Smarter Analytic: 5 Previsões de Big Data - Autor: André Luiz Bernardes


Comente e compartilhe este artigo!

brazilsalesforceeffectiveness@gmail.com

Nenhum comentário:

Postar um comentário

diHITT - Notícias