Cancellare righe vu...
 
Notifiche
Cancella tutti

La consultazione del forum è libera per tutti.

Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).

Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.

[Risolto] Cancellare righe vuote da elenco con doppio click

50 Post
4 Utenti
1 Reactions
144 Visualizzazioni
Jekob_82
(@jekob_82)
Post: 259
Reputable Member
Avviatore di Topic
 

No no uso già questo codice e funziona anche in tabella, però replicato in altro contesto in un altra tabella modifcando l'intervallo non va.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("D1")) Is Nothing Then
        Target.Value = Date
  ElseIf Not Intersect(Target, Range("A7:A1000")) Is Nothing Then
  Dim Rng As Range
On Error Resume Next
tblname = [A6].ListObject.Name
Set Rng = ActiveSheet.ListObjects(tblname).ListColumns(1). _
Range.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If Not Rng Is Nothing Then Rng.Delete Shift:=xlUp
    Cancel = True
    End If
End Sub
Questo post è stato modificato 14 ore fa da Jekob_82
 
Postato : 03/05/2025 14:56
gianfranco55
(@gianfranco55)
Post: 1892
Moderatore
 

ciao

hai cambiato questo

tblname = [A6].ListObject.Name

in pratica la cella A6 rientra nella tabella nuova?

 
Postato : 03/05/2025 14:59
Jekob_82
(@jekob_82)
Post: 259
Reputable Member
Avviatore di Topic
 

@gianfranco55 non va

 
Postato : 03/05/2025 15:03
gianfranco55
(@gianfranco55)
Post: 1892
Moderatore
 

ciao

mancano le virgolette dopo L50

e devi scrivere End Sub dove vedi il rettangolino blu

non hai chiuso la sub CHANGE

 
Postato : 03/05/2025 15:07
Jekob_82
(@jekob_82)
Post: 259
Reputable Member
Avviatore di Topic
 

ma una cancellazione che avviene quando si cancella il contenuto della cella e già elimina la riga, si può fare? Perchè alla fine tocca fare l'operazione 2 volte, 1 per cancellare il contenuto della cella e doppio click per cancellare la riga, non si può fare tutto con una sola azione?

comunque queste cose dovrebbero essere implementate con uno strumento nella barra comandi. che senso ha scrivere una filastrocca del genere per cose cosi ovvie? è ovvio che se cancello il contenuto di una cella e non lo sostituisco con nient'altro significa che quella riga non mi serve +......

Alla fine il ctrl- cancella le righe ma implica cmq una selezione.

 
Postato : 03/05/2025 15:18
gianfranco55
(@gianfranco55)
Post: 1892
Moderatore
 

 

se vedi ho chiesto a marius di farti la macro che al doppio click ti elimini

la riga di una tabella

 

per il resto

nelle tabelle elimini le righe usando il tasto destro.........1 secondo

per il foglio

hai anche a disposizione sulla barra multifunzione

HOME

ELIMINA

elimini quello che vuoi

oltre al tasto destro..

 

cancella le righe ma implica cmq una selezione

 

tutte sempre necessitano di una selezione

altrimenti excel dovrebbe leggerti il pensiero

 

 
Postato : 03/05/2025 15:32
Jekob_82
(@jekob_82)
Post: 259
Reputable Member
Avviatore di Topic
 

@gianfranco55 si ma il click destro implica una selzione, il menu implica vari passaggi col mouse. 

La tua per esempio la trovo perfetta.... doppio click su una cella appena svuotata e via.

 

 
Postato : 03/05/2025 15:55
gianfranco55
(@gianfranco55)
Post: 1892
Moderatore
 

ciao

prova questa ricorda sempre TABELLA

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("L2:L50")) Is Nothing Then
       Dim ActiveTableRow As Long
ActiveTableRow = Selection.Row - Selection.ListObject.Range.Row
Selection.ListObject.ListRows(ActiveTableRow).Delete
    End If
    Cancel = True
End Sub

non serve che la cella sia vuota elimina al doppio click

Questo post è stato modificato 13 ore fa da gianfranco55
 
Postato : 03/05/2025 16:13
Jekob_82
(@jekob_82)
Post: 259
Reputable Member
Avviatore di Topic
 

si funziona ma meglio la prima versione, 1 click per eliminare le vuote.

Qui è un click per ogni riga che si desidera eliminare, direi di no,

 
Postato : 03/05/2025 18:01
Jekob_82
(@jekob_82)
Post: 259
Reputable Member
Avviatore di Topic
 

Postato da: @jekob_82

si funziona ma meglio la prima versione, 1 click per eliminare le vuote.

Qui è un click per ogni riga che si desidera eliminare, direi di no, anche perchè con righe non seguenti tocca correre avanti e indietro col mouse.

 

 
Postato : 03/05/2025 18:03
Alexps81
(@alexps81)
Post: 18
Active Member
 

Ciao, prova questo codice. Al doppio click sul rigo scelto, elimina il rigo:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim tbl As ListObject, i As Long
    
    Set tbl = ActiveSheet.ListObjects(1)
    
    If Not Intersect(Target, tbl.DataBodyRange) Is Nothing Then
        i = Target.Row - tbl.HeaderRowRange.Row
        
        If i > 0 And i <= tbl.ListRows.Count Then
            tbl.ListRows(i).Delete
            Cancel = True
        End If
    End If
End Sub
 
Postato : 03/05/2025 19:19
Jekob_82
(@jekob_82)
Post: 259
Reputable Member
Avviatore di Topic
 

si ma non fa il caso mio.... doppio click sul rigo lo elimina ma se hai una serie di righe da eliminare, troppi click, a sto punto meglio cancellarne il contenuto e doppio click elimina le vuote.

 
Postato : 03/05/2025 19:25
Alexps81
(@alexps81)
Post: 18
Active Member
 

Vedi se così va bene. Quando fai doppioclick sulla tabella, la macro prende come riferimento quella tabella. Ciò significa che è adattabile anche ad altre tabelle su quel foglio (se hai la stessa identica necessita di farla girare per tutte le tabelle presenti in altri fogli dello stesso file allora ti serve l'evento Workbook_SheetBeforeDoubleClick presente in Questa_cartella_di_lavoro)

Quindi, quando fai doppioclick sulla tabella interessata, tutte le righe, dove in prima colonna la cella è vuota, vengono cancellate:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim tbl As ListObject, r As Long
    
    If Not Intersect(Target, Range("D1")) Is Nothing Then
        Target.Value = Date
    End If
    Cancel = True
    
    If Not Target.ListObject Is Nothing Then
        If MsgBox("Vuoi eliminare tutte le righe vuote?", vbQuestion + vbYesNo, "Elimina righe") = vbNo Then Exit Sub
        Set tbl = Target.ListObject
        
        Application.ScreenUpdating = False
        For r = tbl.ListRows.Count To 1 Step -1
            'valuta se la cella in prima colonna è vuota
            If tbl.DataBodyRange.Cells(r, 1).Value = "" Then
                tbl.ListRows(r).Delete
            End If
        Next r
        Cancel = True
        
        Application.ScreenUpdating = True
        Set tbl = Nothing
    End If
End Sub

Ovviamente questo che è scritto nell'evento Private Sub Worksheet_SelectionChange(ByVal Target As Range) lo devi cancellare, altrimenti va in conflitto:

If Not Intersect(Target, Range("A7:B300")) Is Nothing Then
        Dim ur As Long, i As Long
        ur = Cells(Rows.Count, 1).End(xlUp).Row
        For i = ur To 5 Step -1
          If Cells(i, 1) = "" Then
            Rows.EntireRow(i).Delete
          End If
        Next i
    End If
    Cancel = True
 
Postato : 03/05/2025 21:07
Jekob_82
(@jekob_82)
Post: 259
Reputable Member
Avviatore di Topic
 

scusa cosa c'entra d1 nella prima parte di codice, credo nulla 

 

 
Postato : 03/05/2025 21:36
Alexps81
(@alexps81)
Post: 18
Active Member
 

Quella è la tua macro, che mette la data odierna in D1 se ci fai doppioclick. Non l'ho creata io ma già era presente quando hai allegato il file. 

 
Postato : 03/05/2025 22:11
Pagina 3 / 4
Condividi:
My Agile Privacy
Questo sito utilizza cookie tecnici e di profilazione. Cliccando su accetta si autorizzano tutti i cookie di profilazione. Cliccando su rifiuta o la X si rifiutano tutti i cookie di profilazione. Cliccando su personalizza è possibile selezionare quali cookie di profilazione attivare.
Attenzione: alcune funzionalità di questa pagina potrebbero essere bloccate a seguito delle tue scelte privacy
     Scarica il nostro ebook gratuito     

Unisciti a oltre 35.000 professionisti
che hanno già scelto di semplificare il proprio lavoro
e aumentare la produttività con la nostra newsletter!

Scarica l’ebook con i
migliori trucchi e suggerimenti per Excel
selezionati per te da Excel Academy

Download