Usuário com melhor resposta
Mini banco de dados no Excel

Pergunta
-
Pessoal, preciso muito da ajuda de vcs.
Eu utilizo o código abaixo para exportar dados para uma planilha, que me atende como um banco de dados, pesquisando a primeira linha em branco e preenchendo-a.
Porém, eu preciso fazer com que ela evite repetições. Por exemplo, a rotina deverá fazer uma busca com base no CPF na coluna "C". Se não for encontrado resultado (se o CPF dele ainda não tiver sido cadastrado), aí sim ela estará permitida a salvar na primeira linha em branco. Se o CPF já constar na lista, ele não deve fazer nada.
Como eu poderia fazer isso?
Function RetornaLin(Sht As String, Col As String) Dim UltLinPlan As Long UltLinPlan = Sheets(Sht).Range("A65536").End(xlDown).Row RetornaLin = Sheets(Sht).Range(Col & UltLinPlan).End(xlUp).Offset(1, 2).Row End Function ''''''''''''''' Dim Lin As Long Lin = RetornaLin("plan2", "C") Plan1.Range("A12").Copy Plan2.Range("A" & Lin) '''''''''''''''
Respostas
-
Sub checarCPF() Dim cpfNúmero As String Dim cpfRow As Long cpfNúmero = "06188354497" 'Altere o nome da planilha abaixo a seu gosto: cpfRow = getMatchRow(cpfNúmero, ThisWorkbook.Worksheets("Plan1").Columns("C")) If cpfRow > 0 Then MsgBox "CPF encontrado na linha " & cpfRow & "." Else MsgBox "CPF não encontrado" End If End Sub Private Function getMatchRow(searchValue As Variant, _ searchArray As Variant) As Long 'This function returns 0 if searchValue is not on searchArray. Dim element As Long On Error Resume Next element = WorksheetFunction.Match(CDbl(searchValue), searchArray, 0) If element = 0 Then element = WorksheetFunction.Match(CStr(searchValue), searchArray, 0) getMatchRow = element End Function
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator quarta-feira, 11 de fevereiro de 2015 13:52
Todas as Respostas
-
Sub checarCPF() Dim cpfNúmero As String Dim cpfRow As Long cpfNúmero = "06188354497" 'Altere o nome da planilha abaixo a seu gosto: cpfRow = getMatchRow(cpfNúmero, ThisWorkbook.Worksheets("Plan1").Columns("C")) If cpfRow > 0 Then MsgBox "CPF encontrado na linha " & cpfRow & "." Else MsgBox "CPF não encontrado" End If End Sub Private Function getMatchRow(searchValue As Variant, _ searchArray As Variant) As Long 'This function returns 0 if searchValue is not on searchArray. Dim element As Long On Error Resume Next element = WorksheetFunction.Match(CDbl(searchValue), searchArray, 0) If element = 0 Then element = WorksheetFunction.Match(CStr(searchValue), searchArray, 0) getMatchRow = element End Function
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator quarta-feira, 11 de fevereiro de 2015 13:52
-