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