Abaixo, veremos um programa em Excel VBA que conta o número de palavras em um intervalo selecionado. Presume-se que um ou mais espaços separem palavras.
Situação:
1. Primeiro, declaramos dois objetos Range e três variáveis. Chamamos os objetos Range de rng e cell. Uma variável Integer que chamamos de cellWords, uma variável Integer que chamamos de totalWords e uma variável String que chamamos de conteúdo.
Dim rng como intervalo, célula como intervalo
Dim cellWords, totalWords As Integer, content As String
2. Inicializamos o objeto Range rng com o intervalo selecionado e as duas variáveis do tipo Integer com valor 0.
Definir rng = Seleção
cellWords = 0
totalWords = 0
3. Queremos verificar cada célula em um intervalo selecionado aleatoriamente (este intervalo pode ser de qualquer tamanho). No Excel VBA, você pode usar o loop For Each Next para isso. Adicione as seguintes linhas de código:
Para cada célula em rng
Próxima célula
Nota: rng e cell são escolhidos aleatoriamente aqui, você pode usar qualquer nome. Lembre-se de referir-se a esses nomes no restante do código.
4. Em seguida, determinamos para cada célula neste intervalo quantas palavras ela contém. Para ignorar uma célula que contém uma fórmula, adicione a seguinte linha de código entre For Each e Next (somente se cell.HasFormula for false continuaremos).
If Not cell.HasFormula Then
Fim se
5. Primeiro, escrevemos o conteúdo da célula para o conteúdo variável. Em seguida, removemos os espaços no início e no final (se houver). No Excel VBA, você pode usar a função Trim para isso. Por exemplo, "excel vba" será convertido em "excel vba". Adicione as seguintes linhas de código em sua instrução If.
content = cell.Value
content = Trim (conteúdo)
Observação: a função trim no Excel VBA não remove os espaços extras entre as palavras, mas está tudo OK neste exemplo.
6. Neste ponto, uma célula ainda pode estar vazia. Se a célula estiver vazia, atribuímos o valor 0 à variável cellWords. Caso contrário, contém pelo menos uma palavra e atribuímos o valor 1 à variável cellWords. Adicione as seguintes linhas de código em sua instrução If.
Se content = "" Então
cellWords = 0
Outro
cellWords = 1
Fim se
Uma célula pode conter mais de uma palavra, é claro. Isso é exatamente o que queremos descobrir agora. Como exemplo, tomamos: "excel vba". Se uma célula contém pelo menos um espaço neste estágio, ela contém pelo menos mais uma palavra. Você pode usar a função Instr no Excel VBA para procurar um espaço. Instr (conteúdo, "") encontra a posição do primeiro espaço no conteúdo.
7. Faremos uso da estrutura Do While Loop. O código colocado entre essas palavras (nas etapas 8, 9 e 10) será repetido enquanto a parte após Do While for verdadeira. Queremos repetir essas etapas, desde que Instr (content, "")> 0 seja verdadeiro (desde que o conteúdo contenha um espaço e, portanto, mais palavras). Adicione o Do While Loop em sua instrução If.
Do While InStr (content, "")> 0
Ciclo
8. Em seguida, pegamos a parte do conteúdo começando na posição do primeiro espaço. Usamos a função Mid para isso.
content = Mid (content, InStr (content, ""))
Por exemplo: Mid ("excel vba", InStr ("excel vba", "")) fornecerá "vba".
9. Cortamos a corda novamente.
content = Trim (conteúdo)
Resultado: "vba"
10. Incrementamos cellWords em 1.
cellWords = cellWords + 1
Este Loop Do While será repetido enquanto o conteúdo contiver um espaço e, portanto, mais palavras. Em nosso exemplo, saímos do Do While Loop, pois "vba" não contém mais um espaço! Resultado: esta célula contém 2 palavras.
11. Depois de verificar uma célula, adicionamos cellWords à variável totalWords. Esta linha de código deve ser colocada fora do Do While Loop, mas na instrução If.
totalWords = totalWords + cellWords
Todo o processo começa novamente para a próxima célula até que todas as células tenham sido verificadas.
12. Finalmente, exibimos o valor de totalWords usando um msgbox. Esta linha de código deve ser colocada fora do loop For Each Next.
MsgBox totalWords & "palavras encontradas no intervalo selecionado."
13. Teste o programa.
Resultado: