Notifications
Clear all

Inserção duplicada

7 Posts
2 Usuários
0 Reactions
1,357 Visualizações
(@xdinho)
Posts: 0
New Member
Topic starter
 

Bom dia!

Estou utilizando esta programação para cadastrar nomes de PCs e partir desta lista checar se o nome da máquina consta nela para exibir uma planilha e esconder a mesma, só que está havendo um cadastramento duplicados :!: e não sei porque. Isso não pode ocorrer.

Obs: Não programo macros, e sim para web como: JAVA, PHP, HTML5 e etc.

 
Postado : 04/01/2016 7:03 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não entendi??

 
Postado : 04/01/2016 7:05 am
(@xdinho)
Posts: 0
New Member
Topic starter
 

O Me.txtNome (no formulário é responsável pelo campo de texto) recebe um nome, mas na planilha insere dois.

Private Sub btnok_Click()
'verifica se tudo foi preenchido
If Me.txtnome = "" Then
MsgBox "Insira o nome computador", vbExclamation, "Erro!"
Exit Sub
Me.txtnome.SetFocus
'ElseIf Me.txtcargo = "" Then
'MsgBox "Insira cargo / setor!", vbExclamation, "Erro!"
'Exit Sub
'Me.txtcargo.SetFocus
'ElseIf Len(Me.txtdata) < Me.txtdata.MaxLength Then
'MsgBox "Insira data no formato dd/mm/aaaa!", _
' vbExclamation, "Erro!"
'Exit Sub
'Me.txtdata.SetFocus
End If

'solicita autorização
If MsgBox("Deseja inserir estes dados?", vbOKCancel + vbQuestion, _
"Atenção!") = vbCancel Then Exit Sub

'desabilita atualização de tela
Application.ScreenUpdating = False

'LANÇA NA ABA GERAL

'desprotege a planilha
ActiveSheet.Unprotect
'exibe todas as linhas
ActiveSheet.Rows.Hidden = False
'define última linha da lista
Dim lin As Integer
lin = Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
'lança o nome na última linha
Cells(lin, 1) = Me.txtnome
Cells(lin, 1).HorizontalAlignment = xlLeft
'Cells(lin, 2) = Me.txtcargo
'Cells(lin, 2).HorizontalAlignment = xlLeft
'Cells(lin, 3) = Format(Me.txtdata, "mm/dd/yyyy")
'Cells(lin, 3).HorizontalAlignment = xlCenter
'desenha bordas na linha preenchida
Range(Cells(lin, 1), _
Cells(lin, 1)).Borders.LineStyle = xlContinuous
'organiza em ordem crescente (pela coluna A)
With ActiveSheet
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("A3"), _
SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
End With
With ActiveSheet.Sort
.SetRange Range("A3:C" & lin)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'oculta linhas vazias
Range(Cells(lin + 1, 1), Cells(Rows.Count, 1)).EntireRow.Hidden = True
Range("A1").Select
'protege a planilha
ActiveSheet.Protect

'LANÇA NA ABA ESPECÍFICA

'Sheets(Format(Month(Me.txtdata), "00")).Select
'desprotege a planilha
ActiveSheet.Unprotect
'exibe todas as linhas
ActiveSheet.Rows.Hidden = False
'define última linha da lista
Dim lin2 As Integer
lin2 = Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
'lança o nome na última linha
Cells(lin2, 1) = Me.txtnome
Cells(lin2, 1).HorizontalAlignment = xlLeft
'Cells(lin2, 2) = Me.txtcargo
'Cells(lin2, 2).HorizontalAlignment = xlLeft
'Cells(lin2, 3) = Format(Day(Me.txtdata), "00")
'Cells(lin2, 3).HorizontalAlignment = xlCenter
'desenha bordas na linha preenchida
Range(Cells(lin2, 1), _
Cells(lin2, 3)).Borders.LineStyle = xlContinuous
'organiza em ordem crescente (pela coluna A)
With ActiveSheet
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("C3"), _
SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
End With
With ActiveSheet.Sort
.SetRange Range("A3:C" & lin2)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'oculta linhas vazias
Range(Cells(lin2 + 1, 1), Cells(Rows.Count, 1)).EntireRow.Hidden = True
Range("A1").Select
'protege a planilha
ActiveSheet.Protect

'VOLTA NA ABA GERAL
Sheets("geral").Select

'habilita atualização de tela
Application.ScreenUpdating = True

'limpa o formulário
Me.txtnome = ""
'Me.txtcargo = ""
'Me.txtdata = ""
Me.txtnome.SetFocus

End Sub

Private Sub btnlimpar_Click()
Me.txtnome = ""
'Me.txtcargo = ""
'Me.txtdata = ""
Me.txtnome.SetFocus
End Sub

Private Sub btnsair_Click()
Unload Me
End Sub

Private Sub Label1_Click()

End Sub

Private Sub txtnome_Change()
Me.txtnome.MaxLength = 50
Me.txtnome = UCase(Me.txtnome)
End Sub

Private Sub txtcargo_Change()
'Me.txtcargo.MaxLength = 30
'Me.txtcargo = UCase(Me.txtcargo)
End Sub

Private Sub txtdata_Change()
'txtdata.MaxLength = 10
Select Case KeyAscii
Case 8, 48 To 57 ' backspace e numéricos
Case Else ' o resto é travado
KeyAscii = 0
End Select

If KeyAscii = vbKeyReturn Or KeyAscii = vbKeyBack Then Exit Sub

If KeyAscii < vbKey0 Or KeyAscii > vbKey9 Then
KeyAscii = 0
End If

'If Len(txtdata) = 2 Then
' txtdata.Text = txtdata.Text & "/"
' SendKeys "{End}", False
'ElseIf Len(txtdata) = 5 Then
' txtdata.Text = txtdata.Text & "/"
' SendKeys "{End}", False
'End If

End Sub

 
Postado : 04/01/2016 7:25 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O trecho 'LANÇA NA ABA GERAL e 'LANÇA NA ABA ESPECÍFICA não se movimentam entre as abas do arquivo, lançam dados SEMPRE na aba ativa (activesheet).
Aparentemente o arquivo está posicionado na Aba Geral no inicio do "Lançamento de Dados", como a linha :
'Sheets(Format(Month(Me.txtdata), "00")).Select foi comentada/inibida, os dados à partir dessa linha são inseridos na mesma aba; é preciso determinar/selecionar a aba especifica, ou elininar essas linhas da rotina

 
Postado : 04/01/2016 8:27 am
(@xdinho)
Posts: 0
New Member
Topic starter
 

Muito obrigado!
Verei o que posso fazer e retorno com a resposta. Essa macro eu não fiz, estou tentando adaptar ao que preciso para um cliente.

 
Postado : 04/01/2016 8:41 am
(@xdinho)
Posts: 0
New Member
Topic starter
 

Muito obrigado! Que Deus te abençoe! Me ajudou muito, vejo que não está causando problemas mais. Esse forum realmente está ajudando muito, dos 3 que sou cadastrado.

 
Postado : 04/01/2016 9:06 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Xdinho

Você não clicou na mãozinha da resposta do Reinaldo e nem marcou como Resolvido clicando no vezinho verde.

Leia:

viewtopic.php?f=7&t=16757

[]s

 
Postado : 04/01/2016 10:41 am