Dados repetidos na ...
 
Notifications
Clear all

Dados repetidos na coluna

24 Posts
2 Usuários
0 Reactions
5,450 Visualizações
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Bom dia senhores,

estou tentando uasr este codigo para evitar lançamentos duplicados mas tem um erro e nao consiguo entender,

Dim r1 As Long

r1 = wsBDConvenio(Columns("E"))

If r1 = 0 Then

Else

If r1 > 0 Then MsgBox "A nova entrada conflita com a linha: " & r1

End If

Obrigado

 
Postado : 28/05/2012 9:35 am
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

O objeto nao aceita esta propriedade ou metodo.

 
Postado : 28/05/2012 9:51 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Nãoentendi o que pretende comestas instruções, você estáreferenciando COLUNA e não Range :

Veja algumas definições :

The Columns of a Worksheet
http://www.functionx.com/vbaexcel/Lesson15.htm

Range Examples
http://www.excel-vba-easy.com/vba-progr ... l-vba.html

Na ajuda do VBA no proprio excel tambem explica sobre a Propriedade Columns.

Se a intensão é criar alguma rotina de pesquisa de duplicados, faça uma busca no Forum e encontrará vários exemplos funcionais.

[]s

 
Postado : 28/05/2012 6:11 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Bom dia Mauro, a ideia é simples, tentei montar uma rotina que ao lançar uma nova comanda de corrida, ele busque na coluna E se esta comanda ja nao foi lançada, evitando a duplicidade, mas ja entendi entao que esta toda errada, hehehe, to tentando, to tentando.....hehehehehe

 
Postado : 29/05/2012 5:53 am
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Senhores, nao consegui, preciso mesmo de ajuda.

Obrigado

 
Postado : 29/05/2012 8:36 am
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Acho que estou no caminho certo, mas depois da mensagem de que ja existe este registro, como faço para ele interromper o salvar, nao cadastrar o lançamento? e se no comando coloco um valor ainda nao cadastrado ele da erro, tambem nao consegui resolver isto ainda.

Private Sub Duplicado()

Dim NumeroComanda As String
Dim myRange As Range
Dim F As Range

NumeroComanda = Me.TxtComanda.Text

Set myRange = wbClientes.Worksheets("BDConvenio").Range("e:e")
Set F = myRange.Find(NumeroComanda)

If F > 0 Then

MsgBox "Comanda ja Cadastrada: " & NumeroComanda, vbCritical

End If

End Sub

 
Postado : 29/05/2012 10:09 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Experimente algo assim:

Private Sub Duplicado()
Dim NumeroComanda As String
Dim myRange As Range
Dim F As Range
NumeroComanda = Me.TxtComanda.Text
Set myRange = wbClientes.Worksheets("BDConvenio").Range("e:e")
Set F = myRange.Find(NumeroComanda)
If F > 0 Then
    MsgBox "Comanda ja Cadastrada: " & NumeroComanda, vbOKCancel, "Comanda Existente"
        If vbOK Then
            'Aqui o que fazer
        Else
            'Aqui o que fazer ou
            Exit Sub
        End If
    Else
End If
End Sub
 
Postado : 29/05/2012 12:07 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Reinaldo,

Resolveu a questao do que fazer se ja foi cadastrado, no

if vbOk Then
dei un unload me + userform1.show e beleza,

mas se digito no comando uma comanda ainda nao cadastrada, me da erro, se e que entendi tenho que colocar alguma coisa apos Else para continuar a rotina que chama esta funçao, mas nao sei como...

 
Postado : 29/05/2012 1:12 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Em principio, "mandar" para a rotina de cadastro ou salvar

 
Postado : 29/05/2012 1:45 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Reinaldo, mas esta funçao ja e chamada da rotina de cadastro, realmente estou levando um baile aqui, mas almenos estou aprendendo um monte, nao entendi como chamar a rotina novamente, quer que eu post o projeto resumido?

 
Postado : 29/05/2012 2:12 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fabio, não querendo me intrometer em sua rotina, mas eu utilizaria outro tipo,
Quando utilizamos a instrução abaixo, estamos definindo a Coluna inteira, mesmo que ela não contenha dados.
Faça um teste e, apos esta instrução coloque a linha em destaque:

Set myRange = wbClientes.Worksheets("BDConvenio").Range("e:e")

myRange.Select

E verá que é selecionado toda a coluna "E".

Quando eu disse para utilizar a pesquisa do Forum, seria para você encontrar entre outros exemplos, um tópico em Biblioteca onde anexei um exemplo de uma Function, bem simples de ser adaptada, e a mesma localizara se um determinado já existe e realizara a ação que você determinar, baixe o exemplo e de uma estudada no mesmo se não lhe serviria :

Function Pesquisar InputBox e TextBox
viewtopic.php?f=21&t=2877&hilit=ProcuraRefId

[]s

 
Postado : 29/05/2012 7:00 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Mauro, a opinião de vocês sempre sera bem vinda, mesmo muitas vezes pesquisando o que vocês indicam tenho alguma dificuldade em entender, leio sempre tudo que vocês indicam e tento por em pratica, como vou fazer agora com o que você postou, fiquem sempre a vontade para dar pitacos, só tenho a aprender, tem coisas que tenho vergonha de perguntar porque para vocês seguramente é muito simples, mas se não concluo não melhoro o meu projeto.

Como sempre um grande abraço e obrigado pela atenção de vocês, especialmente a você e ao Reinaldo pela paciência de vocês.

 
Postado : 29/05/2012 8:50 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Fiz as adaptaçoes encima do exit do comando, mas para variar me perdi em alguma coisa, no teste que fiz criando uma plan como exemplo, deu certo, mas referenciando a worksheet dentro do meu workbook(banco de dados) da erro.

Public Function ProcuraRefId(ByVal RefId As String) As String
Dim iLin As Long
Dim sCol As Long

sLocaliza = False
Dim wbClientes As Workbook
Dim wsDados As Worksheet
Set wsDados = wbClientes.Worksheets("BDConvenio")

iLin = 2 'Linha 2
sCol = 5 'Coluna 5

With wsDados

Do While Not IsEmpty(.Cells(iLin, sCol))

If .Cells(iLin, sCol).Value = RefId Then

sLocaliza = True 'Verdadeiro se encontrado
sCel = .Cells(iLin, sCol).Address(False, False)

Exit Do 'Sai do Loop se encontrar

End If

'Incrementa a linha
iLin = iLin + 1

Loop

End With

End Function

 
Postado : 29/05/2012 9:53 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Saudações Mestres Mauro e Reinaldo,

Continuo ainda sem conseguir fazer funcionar uma rotina para este meu problema, ficaria muito agradecido se pudesse ter a atenção dos senhores novamente, obrigado.

Fabio

 
Postado : 05/06/2012 9:49 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fabio,
Na function acima, não entendi bem o que deseja executar :?:
Considerações:
vc esta definindo uma variavel "Dim wbClientes As Workbook", mas não "set" qual e esse workbook, se já esta utilizando uma variavel "GLOBAL", não há necessidade de declara-la novamente, porem se não for precisa informar qual e o arquivo.

vc "manda" (se encontrar) sair do loop ("Exit Do 'Sai do Loop se encontrar"), porem não informa à função o valor "achado", para que o retorno seja efetivo deveria ter uma linha após End With : ProcuraRefId=sCel (se o objetivo e ter a celula como retorno)

 
Postado : 05/06/2012 10:33 am
Página 1 / 2