Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Resumo
Ao escrever uma macro do Microsoft Visual Basic for Applications (VBA), talvez seja necessário fazer um loop por meio de uma lista de dados em uma planilha. Há vários métodos para executar essa tarefa. A seção "Mais Informações" deste artigo contém informações sobre os métodos que você pode usar para pesquisar os seguintes tipos de listas:
- Uma lista que contém um número conhecido e constante de linhas.
- Uma lista dinâmica ou uma lista com um número desconhecido de linhas.
- Uma lista que contém um registro específico.
Mais informações
A Microsoft oferece exemplos de programação somente para ilustração, sem garantias expressas ou implícitas. Isso inclui, mas não está limitado a, as garantias implícitas de qualidade comercial ou conformidade para uma determinada finalidade. Este artigo supõe que você conhece a linguagem de programação que está sendo demonstrada e as ferramentas usadas nos processos de criação e depuração. Os engenheiros de suporte da Microsoft podem ajudá-lo, fornecendo a explicação da funcionalidade de determinado procedimento, mas não modificarão estes exemplos para fornecer funcionalidade adicional nem criarão procedimentos específicos para atender às suas necessidades específicas. Os exemplos de código a seguir pressupõem que a lista tem uma linha de cabeçalho que começa na célula A1 e dados que começam na célula A2.
Para pesquisar uma lista com um número constante e conhecido de linhas
Esse código move para baixo a coluna A até o final da lista:
Sub Test1()
Dim x As Integer
' Set numrows = number of rows of data.
NumRows = Range("A2", Range("A2").End(xldown)).Rows.Count
' Select cell a1.
Range("A2").Select
' Establish "For" loop to loop "numrows" number of times.
For x = 1 To NumRows
' Insert your code here.
' Selects cell down 1 row from active cell.
ActiveCell.Offset(1, 0).Select
Next
End Sub
Para pesquisar uma lista dinâmica ou uma lista com um número desconhecido de linhas
Esse código move para baixo a coluna A até o final da lista. (Esse código pressupõe que cada célula na coluna A contém uma entrada até o final.)
Sub Test2()
' Select cell A2, *first line of data*.
Range("A2").Select
' Set Do loop to stop when an empty cell is reached.
Do Until IsEmpty(ActiveCell)
' Insert your code here.
' Step down 1 row from present location.
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Nota Se houver células vazias na coluna A em todos os dados, modifique esse código para considerar essa condição. Verifique se as células vazias estão a uma distância consistente umas das outras. Por exemplo, se todas as outras células da coluna A estiverem vazias (por exemplo, essa situação poderá ocorrer se cada 'registro' usar duas linhas, com a segunda linha recuada uma célula), esse loop poderá ser modificado da seguinte maneira:
' Set Do loop to stop when two consecutive empty cells are reached.
Do Until IsEmpty(ActiveCell) and IsEmpty(ActiveCell.Offset(1, 0))
' Insert your code here.
'
' Step down 2 rows from present location.
ActiveCell.Offset(2, 0).Select
Loop
Para pesquisar um registro específico em uma lista
Esse código move para baixo a coluna A até o final da lista:
Sub Test3()
Dim x As String
Dim found As Boolean
' Select first line of data.
Range("A2").Select
' Set search variable value.
x = "test"
' Set Boolean variable "found" to false.
found = False
' Set Do loop to stop at empty cell.
Do Until IsEmpty(ActiveCell)
' Check active cell for search value.
If ActiveCell.Value = x Then
found = TRUE
Exit Do
End If
' Step down 1 row from present location.
ActiveCell.Offset(1, 0).Select
Loop
' Check for found.
If found = True Then
Msgbox "Value found in cell " & ActiveCell.Address
Else
Msgbox "Value not found"
End If
End Sub