Vídeo: Excel vba planilha Controle Combustivel Veículos 2025
O VBA suporta ainda outro tipo de loop no Excel 2016: looping em cada objeto em uma coleção de objetos. Uma coleção, como você pode saber, consiste em uma série de objetos do mesmo tipo. Por exemplo, o Excel possui uma coleção de todas as pastas de trabalho abertas (a coleção Workbooks) e cada pasta de trabalho possui uma coleção de planilhas (coleção de planilhas).
Quando você precisa percorrer cada objeto em uma coleção, use a estrutura For Each-Next. O exemplo a seguir passa por cada planilha na pasta de trabalho ativa e exclui a planilha se estiver vazia:
Sub DeleteEmptySheets () Dim WkSht como aplicação de planilha. DisplayAlerts = Falso para cada WkSht no ActiveWorkbook. Folhas de trabalho se Função de folha de trabalho. CountA (WkSht. Cells) = 0 Então WkSht. Apague End If Next WkSht Application. DisplayAlerts = True End Sub
Neste exemplo, a variável WkSht é uma variável de objeto que representa cada planilha na pasta de trabalho. Nada é especial sobre o nome da variável WkSht; você pode usar qualquer nome de variável que você gosta.
O código passa por cada planilha e determina uma folha vazia contando as células não dobradas. Se essa contagem for zero, a folha estará vazia e será excluída. Observe que a configuração do DisplayAlerts está desligada enquanto o loop está fazendo o seu problema. Sem essa afirmação, o Excel exibe um aviso sempre que uma folha está prestes a ser excluída.
Se todas as planilhas na pasta de trabalho estiverem vazias, você obterá um erro quando o Excel tentar eliminar a única folha. Normalmente, você escreveria código para lidar com essa situação.
Aqui está outro exemplo para cada exemplo. Este procedimento usa um loop para ocultar todas as planilhas na pasta de trabalho ativa, exceto a folha ativa.
Sub HideSheets () Dim Sht como planilha para cada Sht no ActiveWorkbook. Folhas de trabalho se Sht. Nome ActiveSheet. Nome Então, Sht. Visível = xlSheetHidden End If Next Sht End Sub
O procedimento HideSheets verifica o nome da folha. Se não for o mesmo que o nome da folha ativa, a folha está oculta. Observe que a propriedade Visible não é booleana. Essa propriedade pode realmente assumir qualquer um dos três valores, e o Excel fornece três constantes embutidas. Se você tiver curiosidade sobre a terceira possibilidade (xlVeryHidden), verifique o sistema de Ajuda.
O que fica oculto deve eventualmente ser desativado, então aqui está uma macro que destrói todas as planilhas na pasta de trabalho ativa:
Sub UnhideSheets () Dim Sht como planilha para cada Sht no ActiveWorkbook. Folhas de trabalho Sht.Visível = xlSheetVisible Próximo Sht End Sub
Não surpreendentemente, você pode criar loops Aninhados para cada um. O procedimento CountBold acompanha cada célula no intervalo usado em cada planilha em cada pasta de trabalho aberta e exibe uma contagem do número de células formatadas como negrito:
Sub CountBold () Dim WBook como folha de cálculo Folha de cálculo dim como folha de cálculo Dim Cell Como Range Dim Cnt tão longo para cada WBook em pastas de trabalho para cada WSheet no WBook. Planilhas para cada célula na folha de cálculo. UsedRange If Cell. Fonte. Bold = True Then Cnt = Cnt + 1 Next Cell Next WSheet Próximo WBook MsgBox Cnt & "bold cells found" End Sub
