Ativar uma folha utilizando VBA no Excel
A aplicação do método Activate
a um objeto Worksheet
torna-o a folha ativa,
a folha no topo.
Selecionar folha
Para poder ativar uma folha, é necessário primeiro seleccioná-la. A ativação de um objeto é simples, basta chamar o método Activate
ao objeto.
Terá de especificar o objeto que pretende ativar e é aí que tem algumas opções que serão discutidas aqui.
Select
em vez de Activate
e obter o mesmo resultado:
a folha a ser activada.
No entanto, Select
foi concebido para outro fim, nomeadamente para apoiar a seleção de uma ou mais folhas
e por essa razão é preferível a utilização do Activate para tornar uma folha ativa.
Ativar folha por número
O seu nome é assim:
ActiveWorkbook.Sheets(Index:=1).Activate
O código acima ativa a primeira folha do livro de trabalho especificado.
ActiveWorkbook
para fornecer o método pai Workbook
objeto cujo Worksheet
está a ser utilizado. No código real, é preferível utilizar variáveis de objeto explicitamente declaradas e atribuídas, no caso atual: Dim wbActiveWorkbook As Workbook
: Set wbActiveWorkbook = ActiveWorkbook
muito provavelmente com outra expressão de atribuição de objeto.
O objeto Worksheet
é obtido a partir do procedimento Workbook Sheets
.
With
bloco de instruções. A utilização da sintaxe With torna a estrutura do código mais clara e tem vantagens em termos de desempenho.
Chamar este método é equivalente a escolher o separador da folha.
Ativar folha por nome
Ativar folha com nome de variável
A forma mais comum de se referir a uma folha é pelo seu nome, tal como apresentado no separador folhas:
ActiveWorkbook.Sheets(Index:="data2-17-14").Activate
Se a macro for utilizada por outras pessoas, será necessário adicionar um tratamento de erros adequado, possivelmente como:
Dim ws As Worksheet
On Error Resume Next
Set ws = ActiveWorkbook.Sheets(Index:="data2-17-14")
On Error GoTo 0
If Not ws Is Nothing Then
ws.Activate
Else
End If
Ativar folha por nome de código
Você também pode se referir diretamente a uma pasta usando sua propriedade CodeName
.
Isto tem a vantagem de poder ter a certeza de que a folha de nomes existe.
Mas isso só pode ser feito se a macro estiver na mesma pasta de trabalho que a planilha, o que geralmente não é o caso.
Sheet1.Activate
CodeName
só pode ser alterada na janela de propriedades do módulo de classe do Editor VBA
janela de propriedades do módulo de classe. Não pode ser alterada utilizando o código VBA.
Ativar a folha com base no valor da célula
Uma aplicação para querer ativar uma folha com base num valor de célula é quando existem tantos separadores que se torna difícil navegar. Uma solução possível seria ter uma folha de trabalho de navegação que listasse as folhas de destino e abrir a folha que corresponde à célula selecionada.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strWorksheet As String: strWorksheet = Target.Value
On Error Resume Next
Worksheets(Index:=strWorksheet).Activate
End Sub
- no Explorador de Projectos, faça duplo clique no módulo de classe Sheet adequado para o abrir, e
- Na caixa de combinação à esquerda do módulo (Geral), selecione Folha de trabalho.
- Se não aparecer automaticamente por defeito, o código do manipulador de eventos adequado pode ser selecionado na caixa de combinação da direita.
Selecionar folha e célula
Uma célula só pode ser selecionada se a folha em que se encontra for a folha ativa.
Por isso, geralmente, a seleção é precedida da ativação da folha Parent
.
Por exemplo, em vez de Application.Range("Sheet2!B2").Select
será mais seguro:
With Application.Range("Sheet2!B2")
.Parent.Activate
.Select
End With
Ativar folha noutro livro de trabalho
Para ativar uma folha, não é necessário que o livro de trabalho seja o livro de trabalho ativo. Só tem de identificar o livro de trabalho e a folha de trabalho que pretende ativar e depois fazê-lo:
Dim wb As Workbook
Set wb = Workbooks(Index:="data123.xlsx")
Dim ws As Worksheet
Set ws = wb.Sheets(Index:="Countries")
ws.Activate
Workbooks(Index:="data123.xlsx").Sheets(Index:="Countries").Activate
.
Em todos os outros casos, é preferível introduzir variáveis para o workbook
e ou worksheet
como foi feito acima.
Ativar a folha sem mostrar
Não é necessário ativar uma folha de cálculo (ou um livro de trabalho!) para poder trabalhar com ela.
A melhor maneira de o fazer é declarar uma variável worksheet
e instanciá-la utilizando uma declaração Set
,
como foi feito na secção anterior.
Utilizar variáveis desta forma, em vez de depender de a folha estar ativa, é mais rápido e seguro.
Autor: Mark Uildriks Referência: Worksheet.Activate() | Microsoft Learn