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.
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
ciao
hai cambiato questo
tblname = [A6].ListObject.Name
in pratica la cella A6 rientra nella tabella nuova?
ciao
mancano le virgolette dopo L50
e devi scrivere End Sub dove vedi il rettangolino blu
non hai chiuso la sub CHANGE
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.
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
@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.
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
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,
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.
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
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.
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
scusa cosa c'entra d1 nella prima parte di codice, credo nulla
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.