Selecionar uma folha de cálculo utilizando VBA no Excel

Esta página apresenta diferentes formas de selecionar uma folha de cálculo para operar com base no nome ou no número. Considera-se importante utilizar uma folha de cálculo e as variáveis do livro de trabalho em vez de confiar no código curto para aceder a uma folha de cálculo. Activesheet. Embora forneça um código curto para aceder a uma folha de cálculo, a utilização do CodeName pode conduzir a erros, uma vez que só funciona em determinadas condições. Discutiu duas condições de erro possíveis e a forma de as tratar.

Selecionar a folha de cálculo por nome

A propriedade Item da coleção Worksheets é utilizada para devolver um único objeto Worksheet da coleção.

A título de exemplo, o seu nome é o seguinte:


Dim ws As Worksheet
Set ws = Application.ActiveWorkbook.Worksheets.Item(Index:="data")

A coleção Worksheets é aqui obtida a partir de umaWorkbook.Worksheetschamada de procedimento. O procedimento Item devolve um objeto do tipo Worksheet que é opcionalmente atribuído a uma variável ws.

... ou mais curto:


Dim ws As Worksheet
Set ws = Worksheets(Index:="data")

Dim strWorkbook As String: strWorkbook = "Demo.xlsx"
Dim wb As Workbook
Set wb = Workbooks(strWorkbook)
Dim wsData As Worksheet
Set wsData = wb.Worksheets("Data")

Selecionar folha por número de índice

Uma ficha de trabalho também pode ser identificada pelo seu número na coleção, em que a folha 1 corresponde à primeira folha de trabalho.


Dim ws As Worksheet
Set ws = Worksheets(1)

Folhas ou fichas de trabalho

Na verdade, também pode obter uma folha de trabalho a partir da coleção Sheets do livro de trabalho. Esta última contém todas as folhas do livro de exercícios: para além das folhas de cálculo, também os gráficos (folhas de gráficos). Se pretender que seja devolvida uma folha de cálculo, é mais seguro utilizar Worksheets, sendo específico quanto ao tipo.

Selecionar folha de cálculo por nome de variável

Exceto no caso das macros de uso geral, é frequente saber qual o nome das folhas de cálculo em que a macro actua.


Dim strWorkbook As String: strWorkbook = "Demo.xlsx"
Dim wb As Workbook
Set wb = Workbooks(strWorkbook)
Dim strWorksheet As String: strWorksheet = "data" 
Dim ws As Worksheet
Set ws = wb.Worksheets(strWorksheet)

Ainda assim, o nome da folha pode incluir um elemento variável, por exemplo, a data (formatada) de algum relatório de produção como ficheiro csv. Nesse caso, pode percorrer as folhas de trabalho da seguinte forma: o carácter universal Like "...*" devolverá a folha de cálculo pretendida com o nome que começa por "Data" e um fim não especificado:


Dim wsData As Worksheet
Dim ws As Worksheet
For Each ws In wb.Worksheets
	If ws.Name Like "Data*" Then
		Set wsData = ws
		Exit For
	End If
Next ws

Selecionar folha de cálculo por nome de código

Se a macro só precisar de trabalhar em folhas do livro de trabalho em que a macro está localizada, pode utilizar uma sintaxe mais curta:


Sheet1.Range("A1").Value = "Hello world"

Selecionar a folha à esquerda

Utilize a propriedade Previous para obter a folha à esquerda. Utilize a propriedade Next para obter a folha à direita.


Dim wsPrevious As Worksheet
Set wsPrevious = Sheet2.Previous
If Not wsPrevious Is Nothing Then
    
End If

Selecionar a folha à direita

Utilize a propriedade Next para colocar a folha à direita.


Dim wsNext As Worksheet
Set wsNext = Sheet2.Next

Selecionar intervalo de folhas de cálculo

Em última análise, é provável que queira fazer coisas com um intervalo na folha de cálculo para o qual utilizará uma variável Range.


Dim strWorkbook As String: strWorkbook = "Demo.xlsm"
Dim wb As Workbook
Set wb = Workbooks(strWorkbook)
Dim strWorksheet As String: strWorksheet = "data"
Dim ws As Worksheet
Set ws = wb.Sheets(strSheet)
Dim rng As Range
Set rng = ws.Range("A2:B6")

Erro de tempo de execução 9: subscrito fora do intervalo

Se o endereço Index se referir a um item que não está presente na coleção, será devolvido o erro de tempo de execução 9: subscrito fora do intervalo. Dependendo da utilização efectiva, pode considerar adicionar o tratamento de erros.


Sub Demo()
	On Error GoTo HandleError
	Set ws = Worksheets("xxx")
	
HandleExit:
	Exit Sub
HandleError:
	MsgBox Err.Description
	Resume HandleExit
End Sub

Evento de abertura de folha de cálculo

Pode utilizar o procedimento Worksheet_Activate() que é executado quando a folha é selecionada. Para adicionar o código, abra o módulo da folha de cálculo (selecione no Explorador de projectos) e, na combinação de módulos da esquerda, selecione Worksheet e, na combinação da direita, selecione Activate. Isto irá inserir um bloco de código vazio e, em seguida, completá-lo para:


Private Sub Worksheet_Activate()
	MsgBox "Hi! I'm " & Me.Name & ", who are you?"
End Sub

Autor: Mark Uildriks
Referência: Worksheets.Item() | Microsoft Learn
ícone

Experimente o suplemento do editor Code VBA