Excel VBA Excluir planilha
Para excluir planilha no VBA, usamos o método Delete Worksheet. Para aplicar este método, primeiro precisamos identificar qual planilha estamos excluindo chamando o nome da planilha. Temos dois métodos para fazer o mesmo, primeiro escrevemos diretamente planilha1.delete e o segundo método é planilha (planilha1) .delete.
Portanto, a sintaxe segue.
Planilhas ("Nome da planilha"). Excluir
OU
Folhas ("Nome da folha"). Excluir
Portanto, primeiro precisamos especificar o nome da folha usando Worksheet ou Sheets Object, depois podemos usar o método “Delete” .
Como excluir planilhas do Excel usando código VBA?
Você pode baixar este modelo de planilha de exclusão VBA aqui - modelo de planilha de exclusão VBA em ExcelExemplo # 1 - Excluir planilha usando seu nome
Suponha que você tenha muitas planilhas e, para excluir uma planilha específica, precisamos mencioná-la pelo nome. Por exemplo, tenho 3 planilhas diferentes chamadas “Vendas 2016”, “Vendas 2017” e “Vendas 2018”.
Se eu quiser excluir a planilha chamada “ Vendas 2017 ”, devo mencionar o nome da planilha como mostrado abaixo.
Código:
Sub Delete_Example1 () Planilhas ("planilhas 2017"). End Sub
O problema de mencionar o nome da planilha diretamente, não conseguimos ver a lista IntelliSense de VBA. De qualquer forma, mencione o método como “ Excluir ”.
Código:
Sub Delete_Example1 () Planilhas ("planilhas 2017"). Excluir End Sub
Portanto, isso excluirá a planilha denominada “ Vendas 2017 “.
Erro ao excluir a planilha: Se tentarmos excluir a planilha que não existe ou se mencionarmos o nome da planilha incorretamente, obteremos o erro vba como “Subscrito fora do intervalo”.
Acima, recebi o erro “Subscrito fora do intervalo” porque na minha pasta de trabalho não há nenhum nome de planilha chamado “Vendas 2017”.
Exemplo # 2 - Excluir planilha por seu nome com variáveis
Como vimos o exemplo acima, no momento em que nos referimos ao nome da planilha usando o objeto Worksheets, não conseguimos ver a lista do IntelliSense. Para ver a lista do IntelliSense, precisamos usar variáveis.
Etapa 1: primeiro declare a variável como planilha .
Código:
Sub Delete_Example2 () Dim Ws As Planilha End Sub
Passo 2: Visto que a planilha é uma variável de objeto, precisamos definir a variável para a planilha específica usando a palavra “ SET ”.
Código:
Sub Delete_Example2 () Dim Ws As Worksheet Set Ws = Worksheets ("Vendas 2017") End Sub
Agora a variável “Ws” se refere à planilha denominada “Vendas 2017”.
Passo 3: Agora usando a variável “ Ws ” podemos acessar toda a lista IntelliSense da planilha.
Código:
Sub Delete_Example2 () Dim Ws As Worksheet Set Ws = Worksheets ("Vendas 2017") Ws. End Sub
Etapa 4: Na lista do IntelliSense, selecione o método “ Excluir ”.
Código:
Sub Delete_Example2 () Dim Ws As Worksheet Set Ws = Worksheets ("Vendas 2017") Ws.Delete End Sub
Assim, usando variáveis, podemos acessar a lista do IntelliSense.
Exemplo # 3 - Excluir planilha ativa
A Planilha Ativa nada mais é do que qualquer planilha ativa ou selecionada no momento. Para este método, não precisamos mencionar o nome da planilha. Por exemplo, observe o código VBA abaixo.
ActiveSheet.Delete
No momento, a planilha ativa é “Vendas 2017”.
Se eu executar o código, ele excluirá a planilha ativa, ou seja, “Vendas 2017”.
Agora selecionarei “Vendas 2016”.
Agora, ele excluirá a planilha ativa, ou seja, “Vendas 2016”.
Assim, podemos usar o objeto “Folha Ativa” para deletar a planilha.
Observação: para usar este método, precisamos ter certeza absoluta do que estamos fazendo com a planilha ativa e qual planilha será uma planilha ativa.
Exemplo 4 - Excluir mais de uma planilha
Em nossos exemplos acima, vimos como excluir uma única planilha, mas e se tivermos várias planilhas, digamos que queremos excluir 10 planilhas.
Não podemos continuar escrevendo 10 linhas de código para excluir a planilha, então precisamos usar loops para percorrer a coleção de planilhas e excluí-las.
O código abaixo fará um loop pelas planilhas e excluirá todas as planilhas da pasta de trabalho.
Código:
Sub Delete_Example2 () Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Delete Next Ws End Sub
O código acima gerará um erro porque tenta excluir todas as planilhas da pasta de trabalho. Portanto, para evitar isso, precisamos reter pelo menos uma planilha.
Se quisermos deletar todas as planilhas, exceto a planilha ativa, então precisamos usar o código abaixo.
Código:
Sub Delete_Example2 () Dim Ws As Planilha Para Cada Ws Em ActiveWorkbook.Worksheets If ActiveSheet.Name Ws.Name Then Ws.Delete End If Next Ws End Sub
Similarly, if we don’t want to delete specific worksheet but to delete all other worksheets then we can use below code.
Code:
Sub Delete_Example2() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets If Ws.Name "Sales 2018" Then 'You can change the worksheet name Ws.Delete End If Next Ws End Sub
The above code will delete all the worksheets except the worksheet named as “Sales 2018”.