domingo, 18 de setembro de 2011

7.3. Estrutura FOR – EACH – NEXT (2º EXEMPLO)

7.3. Estrutura FOR – EACH – NEXT


2º EXEMPLO

Agora, vamos pensar um pouquinho. Se tivermos três planilhas, como você viu, todas serão exibidas em MSGBOX’S diferentes. Se tivéssemos quinze planilhas, teríamos que clicar em OK o mesmo número de vezes para ver o nome de cada planilha. Assim, daria mais trabalho criar o LOOP do que ver os nomes na própria planilha. Porém, com criatividade e lógica algorítmica podemos resolver este problema.

Será melhor obviamente, exibir os nomes das planilhas em uma única MSGBOX. Para isto, vamos criar uma variável para receber a mensagem, para fazermos uma chamada a ela dentro do FOR-EACH-NEXT. Depois é só exibir a mensagem quando o LAÇO for desfeito.



Mais fácil que tirar doce dos Smurfs.


CÓDIGO PARA COPIAR

Sub ForEachNext2()

'Primeiro, declaramos as variáveis


Dim Planilha As Worksheet 'Refere-se a cada planilha em específico.
Dim Mensagem As String 'Vamos criar uma variável que receberá a mensagem

'Vamos armazenar o texto na variável mensagem.
Mensagem = "OS NOMES DAS PLANILHAS SÃO: " & Chr(13)

    'Neste caso, vamos exibir todos os nomes em uma só MSGBOX
   
    'No objeto Application, estão todos os objetos do EXCEL, como menus, barras de comando, planilhas, barras de rolagem,
    'celulas e tudo mais. Ou seja, Application é o próprio aplicativo. Então, vamos buscar o objeto application dentro
    'do próprio Excel. Depois, buscamos a planilha ativa(ActiveWorkbook) com o conjunto de todas as planilhas que estão
    'nela(worksheets)
    For Each Planilha In Excel.Application.ActiveWorkbook.Worksheets
                                             'O Chr(13) para pular linhas (como um enter)
        'Agora, vamos capturar o nome de cada planilha. Para tanto, usaremos a variável mensagem para armazenar o nome
        'das planilhas a cada execução do LAÇO. Desta forma, quando o LOOP for rodado pela 1ª vez a Plan1 ficará armazenada
        'na variável mensagem. Quando rodar pela 2ª vez, a variável que já possuem plan1, receberá também Plan2 e assim por
        'diante
        Mensagem = Mensagem & Planilha.Name & Chr(13)
    Next
'Quando o FOR-EACH-NEXT capturar a última planilha o LAÇO será desfeito, então poderemos exibir a mensagem com todas
'as planilhas. Faça o teste.
MsgBox Mensagem

End Sub

Para acessar o curso completo Clique aqui

Nenhum comentário: