O editor de Downcodes traz uma explicação detalhada do código de pesquisa de nomes VBA, cobrindo três métodos: método Range.Find, travessia de loop e funções personalizadas, e inclui aplicativos avançados e perguntas frequentes para ajudá-lo a dominar rapidamente a pesquisa de nomes VBA no Excel Skill. Este artigo apresentará detalhadamente a implementação do código, vantagens e desvantagens de cada método e fornecerá uma solução mais abrangente com base em cenários reais de aplicação.

Para escrever um código VBA para uma pesquisa de nome, você pode fazer isso de algumas maneiras diferentes, como usando um loop, usando a função find do Excel ou usando uma função personalizada para pesquisar um nome específico. A seguir, apresentaremos em detalhes como usar o método Range.Find no VBA para escrever uma função de consulta de nome.
No VBA, o método Range.Find é uma ferramenta muito poderosa e comumente usada para localizar dados específicos. Aqui estão as etapas e exemplos para codificar uma pesquisa de nome usando este método.
SubLocalizarNome()
Dim ws como planilha
Set ws = ThisWorkbook.Sheets(Sheet1) 'Suponha que a lista de nomes esteja na Plan1
Dim searchName como string
searchName = Wang Xiaoming'Este é o nome que procuramos
Dim encontradoCélula como intervalo
Definir foundCell = ws.Cells.Find(What:=searchName, LookIn:=xlValues, LookAt:=xlWhole)
Se não for encontrado, a célula não é nada, então
Nome da MsgBox encontrado: & searchName & em: & foundCell.Address
Outro
Nome da MsgBox não encontrado: & searchName
Terminar se
Finalizar sub
Neste exemplo, primeiro configuramos o objeto de planilha ws para apontar para a planilha que contém os dados do nome. searchName é o nome que queremos pesquisar. A seguir, utilize o método Find para pesquisar. Se o nome correspondente for encontrado, exibiremos o nome e sua localização na caixa de mensagem; caso não seja encontrado, uma caixa de mensagem aparecerá para informar o usuário;
Se os nomes que você procura estiverem espalhados em áreas irregulares ou se você precisar corresponder a critérios de pesquisa mais complexos, o método de percorrer as células será mais flexível.
Sub FindNameByLooping()
Dim ws como planilha
Set ws = ThisWorkbook.Sheets(Sheet1) 'Suponha que a lista de nomes esteja na Planilha1
Dim searchName como string
searchName = Zhang San'Este é o nome que procuramos
Escurecer célula como intervalo
Para cada célula em ws.UsedRange
Se cell.Value = searchName Então
MsgBox encontrou nome: & searchName & em: & cell.Address
Sair do sub
Terminar se
Próxima célula
Nome da MsgBox não encontrado: & searchName
Finalizar sub
Neste código, o loop For Each é usado para iterar pelas áreas usadas da planilha. Quando um nome correspondente é encontrado, uma caixa de mensagem aparece para exibir o nome e sua localização e, em seguida, use Exit Sub para sair da sub-rotina. Se não for encontrado após a conclusão do percurso, uma caixa de mensagem também aparecerá.
Além do código acima que é executado diretamente em uma macro VBA, você também pode criar uma função personalizada (Função Definida pelo Usuário, UDF) que permite usar fórmulas diretamente nas células do Excel para realizar consultas de nomes.
Função FindNameUDF(searchName As String) As String
Dim ws como planilha
Set ws = ThisWorkbook.Sheets(Sheet1) 'Suponha que a lista de nomes esteja na Plan1
Dim encontradoCélula como intervalo
Definir foundCell = ws.Cells.Find(What:=searchName, LookIn:=xlValues, LookAt:=xlWhole)
Se não for encontrado, a célula não é nada, então
FindNameUDF = Nome encontrado: & searchName & em: & foundCell.Address
Outro
FindNameUDF = Nome não encontrado: & searchName
Terminar se
Função final
Esta função personalizada FindNameUDF pode ser usada em qualquer célula. Por exemplo, se você inserir =FindNameUDF(李思), ela retornará a localização de John ou as informações não encontradas.
Em aplicativos reais, você também pode precisar lidar com alguns cenários avançados, como distinção entre maiúsculas e minúsculas, pesquisa global e outros problemas.
Sub FindAllOccurrences()
Dim ws como planilha
Set ws = ThisWorkbook.Sheets(Sheet1) 'Suponha que a lista de nomes esteja na Planilha1
Dim searchName como string
searchName = Wang Xiaoming'Este é o nome que procuramos
Dim firstFound As String
Dim encontradoCélula como intervalo
Definir foundCell = ws.Cells.Find(What:=searchName, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
Se não for encontrado, a célula não é nada, então
primeiro encontrado = encontradoCell.Address
Fazer
Nome da MsgBox encontrado: & searchName & em: & foundCell.Address
Definir encontradaCell = ws.Cells.FindNext(foundCell)
Loop enquanto não encontradoCell não é nada e encontradoCell.Address <> firstFound
Outro
Nome da MsgBox não encontrado: & searchName
Terminar se
Finalizar sub
Neste código, o parâmetro MatchCase é definido como True para indicar distinção entre maiúsculas e minúsculas. Depois de encontrar o primeiro resultado, use o método FindNext para continuar a encontrar correspondências subsequentes e use um loop Do Loop para garantir que toda a planilha seja pesquisada até retornar para. O endereço da primeira célula encontrada.
Combinando o uso de Range.Find, travessia de loop e funções personalizadas, você pode escrever código de consulta de nome VBA adequado de acordo com necessidades específicas. Acima estão os diferentes métodos de uso do VBA para consultar o código do nome. Você pode escolher o método mais adequado de acordo com sua situação real.
1. Como usar o VBA para escrever um código simples de consulta de nome?
O VBA pode ser usado para escrever macros poderosas do Excel. Para escrever um código de pesquisa de nome, você pode seguir estas etapas:
Primeiro, selecione um intervalo no Excel para armazenar dados de nomes e informações relacionadas. Por exemplo, você poderia armazenar nomes na coluna A e outras informações relacionadas na coluna B. Em seguida, pressione Alt+F11 no Excel para abrir o editor VBA. No editor VBA você pode criar um novo módulo. No novo módulo, você pode escrever código VBA para implementar a função de consulta de nome. Por exemplo, você poderia usar um loop For para iterar por uma coluna de nomes e depois usar uma instrução condicional para determinar se um nome correspondente foi encontrado. Finalmente, você pode exibir os resultados da consulta em outra célula do Excel ou usar a função MsgBox para exibi-los como uma caixa de mensagem pop-up.Seguindo as etapas acima, você pode escrever um código VBA simples para implementar a função de consulta de nome. Lembre-se de habilitar macros ao salvar arquivos Excel.
2. A quais questões você deve prestar atenção ao escrever código VBA?
Ao escrever código VBA, há alguns problemas que precisam ser observados para garantir que o código seja executado corretamente e otimize o desempenho:
Evite usar variáveis globais: Variáveis globais existirão durante todo o processo, ocupando memória e afetando o desempenho do código. Tente limitar o escopo das variáveis a sub-rotinas ou funções específicas. Use comentários: usar comentários em seu código aumenta a legibilidade do código e ajuda outros desenvolvedores a entender melhor a intenção do código. Tente adicionar comentários apropriados a cada sub-rotina ou função. Tratamento de erros: adicionar tratamento de erros apropriado ao código pode evitar interrupções ou erros no código devido a situações inesperadas. Você pode usar a instrução On Error para capturar e tratar erros em tempo de execução. Otimize o código: tente usar técnicas de codificação eficientes, como evitar loops aninhados e cálculos repetidos. Usar a instrução Exit For em um loop pode sair do loop antecipadamente e melhorar a eficiência da execução do código.3. Como estender a função do código de consulta de nome VBA?
O código VBA pode ser estendido e personalizado de forma flexível para atender a necessidades específicas. Se quiser estender ainda mais a funcionalidade do código de consulta de nome VBA, você pode considerar os seguintes métodos:
Adicione mais condições de consulta: além do nome, você pode adicionar outras condições de consulta no código, como idade, sexo, etc. Você pode usar operadores lógicos (como And, Or) para combinar diversas condições de consulta. Implementar consultas difusas: se quiser permitir que os usuários executem consultas difusas, você pode usar o operador Like do VBA. Por exemplo, você pode permitir que os usuários usem caracteres curinga (como * e?) em consultas para representar correspondências difusas. Interagindo com o banco de dados: Se o seu volume de dados for muito grande, considere armazenar os dados em um banco de dados e usar VBA para interagir com o banco de dados. Você pode usar ADO (ActiveX Data Objects) para conectar e consultar o banco de dados. Criar interface de usuário: se desejar que os usuários possam inserir condições de consulta e visualizar resultados de forma independente, você pode usar ferramentas de construção de interface de usuário, como UserForm. Ao adicionar caixas de texto e botões ao UserForm, os usuários podem inserir condições de consulta e clicar nos botões para realizar operações de consulta.Acima estão algumas idéias para estender a função de código de consulta de nome VBA. Você pode personalizá-lo e modificá-lo de acordo com as necessidades reais. Boa sorte ao escrever um código VBA poderoso!
Espero que este artigo possa ajudá-lo a entender e aplicar melhor o VBA para consulta de nomes. Se você tiver alguma dúvida, fique à vontade para perguntar!