Notifications
Clear all

Como fazer uma pesquisa com várias variáveis?

3 Posts
2 Usuários
0 Reactions
752 Visualizações
(@hugormm)
Posts: 4
New Member
Topic starter
 

Boa noite, pessoal.

Estou montando uma planilha que tem um formulário onde devem ser inseridas 2 informações. A primeira delas é o "Grupo", uma sequencia numérica de 6 dígitos, a segunda variável é a "Cota", que também é uma sequencia numérica, mas de 3 dígitos. Quero um código que procure por estas variáveis na minha planilha quando o usuário tentar inseri-las pelo formulário. Caso esta combinação específica de grupo e cota ainda não exista na planilha, ele pode inserir os dados. Caso esta combinação já exista, o usuário deve ser avisado que a combinação já existe e ter a opção de escolher por inserir os dados na linha já existente ou criar uma linha duplicada daquele grupo e cota específico, mas com a informação "Bem" sendo igual a +1 em relação à linha original daquele grupo e cota.
Consegui fazer com que o código avisasse caso o grupo e cota já esteja inserido e tudo mais.. Agora, quando tento inserir um NOVO grupo e cota, o excel não reconhece e não faz nada. Alguem pode me ajudar com este código??
Vale lembrar que criei uma função auxiliar que chamei de Fmatch:

Private Function vMatch(ByVal strValue As String, ByVal varArray As Variant) As Long
  Dim Temp As Long

  On Error Resume Next
  Temp = WorksheetFunction.Match(strValue + 0, varArray, 0)
  If Temp = 0 Then Temp = WorksheetFunction.Match(VBA.CStr(strValue), varArray, 0)
  On Error GoTo 0

  If Temp > 0 Then
    If VBA.TypeName(varArray) = "Range" Then
      If varArray.Columns.Count = 1 Then
        Temp = varArray(1).Row + Temp - 1
      ElseIf varArray.Rows.Count = 1 Then
        Temp = varArray(1).Column + Temp - 1
      Else
        'A seleção não é um vetor, mas sim uma matriz.
        Temp = 0
      End If
    End If
  End If

  vMatch = Temp
End Function

Este é o código do formulário (quando clico para salvar os dados):

Private Sub Botao_Salvar_Click()

 'Não deixar salvar sem preencher os dados
    
    If Campo_Grupo = "" Or Campo_Cota = "" Or Campo_Produto = "" Or Campo_Canal = "" Or Campo_Empresa = "" Or Campo_plano = "" Or Campo_Pago = "" Or Campo_Pessoa = "" Or Campo_Envio_do_kit = "" Or Campo_Bem = "" Then
    Preencher_erro.Show
    Else
    
        'verificar se grupo e cota já não foi inserido
        Dim Gc As String
        Dim Linha As String
        Dim Bem As String
        Dim Bl As String
        Dim intLinha As Integer
      
        Gc = Campo_Grupo.Value + Campo_Cota.Value
        With ThisWorkbook.Worksheets("Automóveis")
        Linha = fMatch(Gc, .Columns("A"))
        If Linha <> 0 Then
        
            With ThisWorkbook.Worksheets("Automóveis")
            Bem = Campo_Bem.Value
            Bl = fMatch(Bem, .Columns("EK"))
            If Bl <> 0 Then
            Já_existe.Show
            Else

            'Salvando os dados na planilha

                

                intLinha = ThisWorkbook.Worksheets("Automóveis").Range("C65536").End(xlUp).Offset(1, 0).Row

                ThisWorkbook.Worksheets("Automóveis").Cells(intLinha, 4) = Campo_Grupo
                ThisWorkbook.Worksheets("Automóveis").Cells(intLinha, 5) = Campo_Cota
                ThisWorkbook.Worksheets("Automóveis").Cells(intLinha, 6) = Campo_Produto
                ThisWorkbook.Worksheets("Automóveis").Cells(intLinha, 10) = Campo_Canal
                ThisWorkbook.Worksheets("Automóveis").Cells(intLinha, 11) = Campo_Empresa
                ThisWorkbook.Worksheets("Automóveis").Cells(intLinha, 7) = Campo_plano
                ThisWorkbook.Worksheets("Automóveis").Cells(intLinha, 8) = Campo_Pago
                ThisWorkbook.Worksheets("Automóveis").Cells(intLinha, 9) = Campo_Pessoa
                ThisWorkbook.Worksheets("Automóveis").Cells(intLinha, 13) = Campo_Envio_do_kit
                ThisWorkbook.Worksheets("Automóveis").Cells(intLinha, 141) = Campo_Bem
                
                
    
                'Preenchendo data e hora
                
                ThisWorkbook.Worksheets("Automóveis").Cells(intLinha, 3) = Time
                ThisWorkbook.Worksheets("Automóveis").Cells(intLinha, 2) = Date
                ThisWorkbook.Worksheets("Automóveis").Cells(intLinha, 14) = Date
    
                'limpando os dados inseridos
                Campo_Grupo = ""
                Campo_Cota = ""
                Campo_Produto = ""
                Campo_Canal = ""
                Campo_Empresa = ""
                Campo_plano = ""
                Campo_Pago = ""
                Campo_Pessoa = ""
                Campo_Envio_do_kit = ""
                Campo_Bem = ""
    
                'exibindo msg de dados inseridos
                Dados_Salvos.Show
    
    'End With
    End If
    
    
    'End If
    End With
    End If
    End With
    End If
    'End If
        'Fim da Pesquisa
    'End With
    
    
    
 
End Sub

Conseguem apontar os erros?

Obrigado desde já

 
Postado : 15/07/2016 4:44 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Disponibilize o arquivo com o formulario e o codigo.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 15/07/2016 4:50 pm
(@hugormm)
Posts: 4
New Member
Topic starter
 

Disponibilize o arquivo com o formulario e o codigo.

Gostaria que o usuário pudesse ter as opções de inserir um update em um cliente já existente e, caso ele tente inserir um cliente novo, mas que já existe no banco dedados, ele tenha a opção de fazer update no cliente encontrado ou de inserir um segundo bem no cadastro do cliente.

 
Postado : 15/07/2016 6:27 pm