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.

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.

O objeto Worksheet é obtido a partir do procedimento Workbook Sheets.

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

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

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

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
ícone

Experimente o suplemento do editor Code VBA