Notifications
Clear all

Excluir linha da planilha automaticamente através da listbox

5 Posts
2 Usuários
0 Reactions
1,649 Visualizações
(@damiano)
Posts: 6
Active Member
Topic starter
 

Boa noite. Estou com a seguinte dificuldade de solução: Os dados da Plan são exibidos na Listbox do formulário (ao pressionar exibir dados) e o objetivo é excluir um ou vários registros (multi-select) ao pressionar 'excluir', porém o código executa excluindo registros acima do selecionado erradamente. 

 
Postado : 13/05/2023 12:24 am
(@osvaldomp)
Posts: 857
Prominent Member
 

"porém o código executa excluindo registros acima do selecionado"

O erro ocorre porque a busca é efetuada em uma coluna em que os valores se repetem, então sempre será excluída a primeira linha encontrada. Exemplo: qualquer item que seja selecionado na ListBox a partir da linha 8 da planilha, a linha 8 sempre será a linha excluída.

Para contornar mude a coluna da busca para a coluna C, que é a única em que os valores não se repetem.

Assim altere:

de ~~~> linhalist, 0 para ~~~> linhalist, 2

de ~~~> Range("a:a") para ~~~> Range("C:C")

Osvaldo

 
Postado : 13/05/2023 2:50 pm
(@damiano)
Posts: 6
Active Member
Topic starter
 

Boa noite Osvaldomp, te agradeço pela atenção em responder. Seu conhecimento foi fundamental para corrigir problema que eu estava enfrentando. Só mais um ensino se for possível: Nesse caso a ListBox em selecionar apenas um registro está pacificado, porém tentei na propriedade da ListBox em MultiSelectExtended não dá, é possível resolver?

Deus o abençoe grandemente. Gratidão.

 
Postado : 27/05/2023 7:03 pm
(@osvaldomp)
Posts: 857
Prominent Member
 

Olá, Damiano.

Veja se ajuda.

1. na Propriedade MultiSelect da ListBox1Masc selecione 1-fmMultiSelectMulti

2. no módulo do UserForm remova todos os códigos que atualmente lá estão e cole os 3 códigos abaixo

3. o botão Nota BI existente no UserForm não será utilizado, pode ser removido

Private Sub UserForm_Initialize()
With Me.ListBox1Masc
.ColumnCount = 7
.ColumnWidths = "45;45;170;45;45;45"
.List = ActiveSheet.[A1].CurrentRegion.Value
End With
End Sub
Private Sub ListBox1Masc_Change()
If ListBox1Masc.Selected(0) = True Then
ListBox1Masc.Selected(0) = False
End If
End Sub
Private Sub BtExRegPbdM_Click()
Dim linhalist As Long
For linhalist = ListBox1Masc.ListCount - 1 To 1 Step -1
If ListBox1Masc.Selected(linhalist) Then Sheets("PBD").Rows(linhalist + 1).Delete
Next linhalist
End Sub

Curiosidade: qual o motivo para utilizar um UserForm com o fim de excluir linhas da planilha se a exclusão pode ser feita diretamente na planilha ?

Osvaldo

 
Postado : 28/05/2023 11:02 am
(@damiano)
Posts: 6
Active Member
Topic starter
 

Bom dia, Sobre o motivo de utilzar um UserForm com o fim de excluir linhas é: eu lanço todas informações no form, (Bt copia) dados para plan1, ali é realizado os cálculos, e retorna os valores encontrados no form, estão de acordo com o desejado? (Bt exportar para PBD), para exibir os resultados exportados para plan2(PBD) agindo no (Bt Nota BI), para excluir um ou vários registros(MultiSelect) da Nota BI (plan2) eu seleciono as linhas através do form e daí que surgia os problemas de exclusão de linhas.

 
Postado : 11/06/2023 11:40 am