Notifications
Clear all

Alterar codigo vba

4 Posts
2 Usuários
0 Reactions
1,671 Visualizações
(@edgard-jr)
Posts: 31
Eminent Member
Topic starter
 

será que alguem conseguiria alterar esse codigo paraque ao inves dele deletar os dados fizesse ele apenas recorta a linha e colar na ultima linha em branco ?

o codigo é esse

Private Sub btnExcluir_Click()
If Me.LblLinha.Caption = "Linha" Or Me.TextBox2 = "" Then
MsgBox "Pesquise os dados.", 64, "Treino Listview"
Exit Sub
End If
If MsgBox("Confirma Saida de: " & Me.TextBox2 & " ?", vbYesNo + vbQuestion, "Treinando Listview") = vbNo Then
Exit Sub
End If
Dim linha, LinhaFinal As Integer
LinhaFinal = Plan1.Range("A65000").End(xlUp).Row
For linha = 2 To LinhaFinal
If Plan1.Range("A" & linha).Value = CDbl(Me.TextBox1.Value) Then
Plan1.Range("A" & linha).EntireRow.Delete
linha = linha - 1
End If
Next linha
Call PreencherListView
Call LimparControles
End Sub

 
Postado : 30/11/2011 3:58 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 


Verifique, num arquivo de teste, se a alteração destacada faz com que o resultado seja o esperado.

Caso contrário, indique a inconsistência ou o erro:

If Plan1.Range("A" & linha).Value = CDbl(Me.TextBox1.Value) Then

j = Plan1.Range("A65536").End(xlUp).Row + 1
Rows(linha).Cut
Rows(j).Insert Shift:=xlDown

linha = linha - 1
End If

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 30/11/2011 5:05 pm
(@edgard-jr)
Posts: 31
Eminent Member
Topic starter
 

Edson deu um erro em tempo de execução '13' - tipos incompativeis

segue planilha. o botao para executar o comando esta em UserForm1 e chamase CommandButton1_Click

 
Postado : 30/11/2011 9:53 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Edgard, implementando as linhas que o Edson indicou, a rotina para o botão ficaria assim, estou levando em conta que o "ID" não se repete :

Private Sub btnExcluir_Click()
    Dim linha, LinhaFinal As Integer

    If Me.LblLinha.Caption = "Linha" Or Me.TextBox2 = "" Then
        MsgBox "Pesquise os dados.", 64, "Treino Listview"
        Exit Sub
    End If

    If MsgBox("Confirma exclusão de dados de: " & Me.TextBox2 & " ?", vbYesNo + vbQuestion, "Treinando Listview") = vbNo Then
       Exit Sub
    End If

    Application.ScreenUpdating = False
    Plan1.Activate

    LinhaFinal = Plan1.Range("A65000").End(xlUp).Row

    For linha = 2 To LinhaFinal
    
        If Plan1.Range("A" & linha).Value = CDbl(Me.TextBox1.Value) Then
            j = Plan1.Range("A65536").End(xlUp).Row + 1
            
            Rows(linha).Cut
            Rows(j).Insert Shift:=xlDown
            
            Exit Sub
            
            linha = linha - 1
            
        End If
    Next linha
    
    Call PreencherListView
    Call LimparControles

End Sub

Os erros quando aciona o "CommandButton1_Click" é porque,
primeiro, você indicou :If Plan1.Range("A" & linha).Value = CDbl(Me.TextBox2.Value) Then e o correto é TextBox1,
o segundo, como transferimos a linha para a última, e não temos a instrução para Sair da rotina após as ações propostas, temos um Loop infinito, por isso que atentei acima, se os "ID" são Únicos.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 01/12/2011 8:30 am