Previous page | 1 | Next page
Facebook  

Cancella la riga in base al comando

Last Update: 8/24/2019 2:32 PM
Author
Print | Email Notification    
Post: 138
Registered in: 10/3/2015
Location: ALBAREDO PER SAN MARCO
Age: 39
Junior User
2003
OFFLINE
4/26/2019 9:11 PM
 
Modify
 
Delete
 
Quote

Buona sera nel foglio che allego ho creato 11 pulsanti. Nel foglio dovrei cancellare tutte la righe quando premo uno degli undici pulsanti, la colonna B è assunta come interlocutore del comando. Grazie e buon Week end Matteo
Cancella riga in una tabellacancella9/9/2019 5:52 PM by Aquilarossa64
Roma-Istanbul Basaksehir Senza Padroni Quindi Roma...38 pt.9/20/2019 9:33 AM by Giacomo(fu Giacomo)
Lecco vs Monzablog191230 pt.9/20/2019 10:24 AM by palazziforever
Post: 3,742
Registered in: 6/28/2011
Location: BINASCO
Age: 66
Master User
2007
OFFLINE
4/27/2019 2:06 AM
 
Modify
 
Delete
 
Quote

A scelta ricreare la prima per ogni tasto, oppure basta solo la seconda...
Option Explicit
Option Compare Text
Sub Sigle_BA()
Dim Ur As Long, X As Long
Ur = Range("A" & Rows.Count).End(xlUp).Row
For X = 1 To Ur
    If Cells(X, 2) = "BA" Then
        Range(Cells(X, 1), Cells(X, 7)).ClearContents
        'oppure  Range(Cells(X, 1), Cells(X, 7)).Delete Shift:=xlUp
    End If
Next X
End Sub
Sub Sigle_tutte()
Dim Ur As Long, X As Long, N As Long, Msg As String
Ur = Range("A" & Rows.Count).End(xlUp).Row
Msg = InputBox("Digitare due caratteri, Ex BA", , "")
If Msg = "" Then Exit Sub
For X = 1 To Ur
    If Cells(X, 2) = Msg Then
        Range(Cells(X, 1), Cells(X, 7)).ClearContents
        'oppure  Range(Cells(X, 1), Cells(X, 7)).Delete Shift:=xlUp
        N = N + 1
    End If
Next X
If N = 0 Then MsgBox "Nessuna sigla con " & Msg
End Sub
[Edited by raffaele1953 4/27/2019 2:16 AM]
------------------------------------
Un saluto Excel 2007 (se riesco capire il 2013)
Post: 2,197
Registered in: 4/6/2013
Location: ROMA
Age: 71
Veteran User
2010
OFFLINE
4/27/2019 10:07 AM
 
Modify
 
Delete
 
Quote

Ciao
solo per ricordare che in caso di eliminazione delle righe è opportuno iniziare il ciclo dal basso altrimenti su due sigle contigue ne verrebbe eliminata una soltanto.

saluti


Domenico
Win 10 - Excel 2016
Post: 3,743
Registered in: 6/28/2011
Location: BINASCO
Age: 66
Master User
2007
OFFLINE
4/27/2019 12:34 PM
 
Modify
 
Delete
 
Quote

Hai ragione dodo47 (grazie mille), pensavo per i pulsanii da modificare...

Se volesse usare... Delete Shift:=xlUp
Dovrebbe essere For X = Ur To 1 step -1
------------------------------------
Un saluto Excel 2007 (se riesco capire il 2013)
Post: 138
Registered in: 10/3/2015
Location: ALBAREDO PER SAN MARCO
Age: 39
Junior User
2003
OFFLINE
4/29/2019 9:00 PM
 
Modify
 
Delete
 
Quote

Ciao Raffaele rispondo solo ora perché ho avuto dei problemi sentimentali è non ho usato il pc per quattro giorni, macro perfetta,
rispondo anche a Domenico ho provato ad usare il ciclo e anche dall'alto le sigle vengono eliminate tutte correttamente. Buona serata amici.
Post: 2,202
Registered in: 4/6/2013
Location: ROMA
Age: 71
Veteran User
2010
OFFLINE
4/29/2019 9:41 PM
 
Modify
 
Delete
 
Quote

Tu pensala come vuoi, ma il ciclo di eliminazione delle righe è corretto solo se il loop viene fatto dal basso verso l'alto.

Saluti
Domenico
Win 10 - Excel 2016
Post: 3,749
Registered in: 6/28/2011
Location: BINASCO
Age: 66
Master User
2007
OFFLINE
4/30/2019 1:14 PM
 
Modify
 
Delete
 
Quote

@gattodimarmo1980
Se metti due sigle uguali, uno dopo l'altro non funzionerebbe
------------------------------------
Un saluto Excel 2007 (se riesco capire il 2013)
Post: 139
Registered in: 10/3/2015
Location: ALBAREDO PER SAN MARCO
Age: 39
Junior User
2003
OFFLINE
4/30/2019 9:35 PM
 
Modify
 
Delete
 
Quote

Modulo2 cancella x mese,Modulo 3 cancella x anno,Modulo4 x giorni
Ciao Raffaele ti metto il file con la macro da provare ,ripeto a me funziona vengono eliminate tutte le righe correttamente ho fatto più di 50 prove sia dall'alto che dal basso e viceversa può dipendere dalla versione di Excel magari. Lele, si potrebbe aggiungere tre moduli uno che cancella tutte le righe inserendo per esempio un Msg = InputBox("Digitare mese, Ex Febbraio", , ""),per il modulo 3 un
Msg = InputBox("Digitare anno, Ex 2014", , "")per il modulo 4 un
Msg = InputBox("Digitare giorni, Ex 28 ", , "").Grazie buona serata Matteo
Post: 3,750
Registered in: 6/28/2011
Location: BINASCO
Age: 66
Master User
2007
OFFLINE
4/30/2019 9:53 PM
 
Modify
 
Delete
 
Quote

Funziona perche stai solo annullando i valori... e non usi la riga verde che era disattivata
For X = 1 To Ur
    If Cells(X, 2) = Msg Then
        Range(Cells(X, 1), Cells(X, 7)).ClearContents
        N = N + 1
    End If
Next X

Io e dodo47, abbiamo scritto se invece desideri eliminare la riga. Devi usare la riga verde
For X = Ur To 1 Step -1
    If Cells(X, 2) = Msg Then
        Range(Cells(X, 1), Cells(X, 7)).Delete Shift:=xlUp 'nota la differenza
        N = N + 1
    End If
Next X

Se desideri fai la prova, metti in colonna B tutte le sigle=RO e vedrai da solo

Sub Giorno()
Dim Ur As Long, X As Long, Msg As Long
Ur = Range("A" & Rows.Count).End(xlUp).Row
Msg = InputBox("Digitare un numero da 1 a 31", , 0)
If Msg = 0 Or Msg > 31 Then Exit Sub
For X = Ur To 1 Step -1
    If Day(Cells(X, 1)) = Msg Then
        Range(Cells(X, 1), Cells(X, 7)).ClearContents' se abiliti quella sotto devi disabilitare questa
        'Range(Cells(X, 1), Cells(X, 7)).Delete Shift:=xlUp
    End If
Next X
MsgBox "Fatto"
End Sub
Sub Mese()
Dim Ur As Long, X As Long, Msg As Long
Ur = Range("A" & Rows.Count).End(xlUp).Row
Msg = InputBox("Digitare un numero da 1 a 12", , 0)
If Msg = 0 Or Msg > 12 Then Exit Sub
For X = Ur To 1 Step -1
    If Month(Cells(X, 1)) = Msg Then
        Range(Cells(X, 1), Cells(X, 7)).ClearContents
        'Range(Cells(X, 1), Cells(X, 7)).Delete Shift:=xlUp
    End If
Next X
MsgBox "Fatto"
End Sub
Sub anno()
Dim Ur As Long, X As Long, Msg As Long
Ur = Range("A" & Rows.Count).End(xlUp).Row
Msg = InputBox("Digitare anno con 4 numer1 da 1900 a 2100", , 0)
If Msg < 1900 Or Msg > 2100 Then Exit Sub
For X = Ur To 1 Step -1
    If Year(Cells(X, 1)) = Msg Then
        Range(Cells(X, 1), Cells(X, 7)).ClearContents
        'Range(Cells(X, 1), Cells(X, 7)).Delete Shift:=xlUp
    End If
Next X
MsgBox "Fatto"
End Sub
[Edited by raffaele1953 4/30/2019 11:51 PM]
------------------------------------
Un saluto Excel 2007 (se riesco capire il 2013)
Post: 140
Registered in: 10/3/2015
Location: ALBAREDO PER SAN MARCO
Age: 39
Junior User
2003
OFFLINE
5/1/2019 11:06 AM
 
Modify
 
Delete
 
Quote

Modulo 5 Tieni numero
Buon Giorno Raffaele ho notato la differenza solo ora, ho fatto la prova e infatti dall'alto ne viene eliminata soltanto una. Mi servirebbe un altro modulo, nelle colonne C,D,E,F,G ci sono i numeri,
si potrebbe cancellare cancella tutte le righe inserendo per esempio un Msg = InputBox("TIENI UN NUMERO DA 1 a 90", , "")che non contengono il numero selezionato.Grazie buon primo maggio Matteo
Post: 141
Registered in: 10/3/2015
Location: ALBAREDO PER SAN MARCO
Age: 39
Junior User
2003
OFFLINE
5/4/2019 3:35 PM
 
Modify
 
Delete
 
Quote

Modulo 5 Tieni numero
Per questo modulo mi consigliate di aprire una nuova discussione perché si tratta di far partire una ciclo facendo una ricerca verticale cancellando poi le righe che non servono o possiamo continuarla tranquillamente qui? Buon Week end Matteo
Post: 160
Registered in: 10/3/2015
Location: ALBAREDO PER SAN MARCO
Age: 39
Junior User
2003
OFFLINE
8/23/2019 10:21 AM
 
Modify
 
Delete
 
Quote

Tieni la riga in base a ....
Buon giorno allego file con userform associata.
Mi servirebbe un macro che mi tiene le righe in base al numero e mi cancella le altre.Esempio numero 15.Una volta tenuto il numero 15, il codice dovrebbe cancellarmi le righe 3 4 5 6 e la 13°.IL range è (A1 C14)in questo esempio escludere quindi i valori del numero stesso in colonna (D).Una volta finito il ciclo le righe vuote poi devono essere cancellate.Grazie anticipatamente.
P.S. Non ho aperto una nuova discussione perché e simile a questa
Post: 2,345
Registered in: 4/6/2013
Location: ROMA
Age: 71
Veteran User
2010
OFFLINE
8/23/2019 12:29 PM
 
Modify
 
Delete
 
Quote

non c'è nessuna userform nel tuo file.

e poi perchè non cancellare anche la riga 2 e 14 ?
e perchè cancellare la riga 6 ?

saluti



[Edited by dodo47 8/23/2019 12:30 PM]
Domenico
Win 10 - Excel 2016
Post: 161
Registered in: 10/3/2015
Location: ALBAREDO PER SAN MARCO
Age: 39
Junior User
2003
OFFLINE
8/23/2019 2:29 PM
 
Modify
 
Delete
 
Quote

Ciao Domenico scusa ma non ho associato la Userform ho associato solo il pulsante e non mi sono spiegato bene. L'userform deve dire "digita un numero compreso fra 1 e 90" In questo caso digito il numero 15.Io tenendo il numero 15 devo cancellare le righe 3 4 5 6 e la 13°.Nella riga (6) il 15 è presente in colonna D perciò la riga bisogna cancellarla.Riga 2 ,il 15 è in C2 perciò la riga non va cancellata.Riga (14) il 15 è in (A14) perciò la riga va tenuta e non cancellata.Per far si che la macro vada a buon fine bisogna da subito escludere tutti i valori della colonna D.Grazie ciao Dodo47
Post: 162
Registered in: 10/3/2015
Location: ALBAREDO PER SAN MARCO
Age: 39
Junior User
2003
OFFLINE
8/24/2019 11:24 AM
 
Modify
 
Delete
 
Quote

Riscontro non giusto
Buon giorno a tutti ho provato a modificare questa macro ma non ho il risultato che volevo. Se riuscite per favore a vedere l'errore. Secondo me l'errore è che i numeri devono essere nel range A C in ordine crescente. Se i numeri sono in ordine decrescente la macro mi cancella la riga. Allego foglio



Sub Tieninumerocancellariga()

Dim num As Integer
Dim rng As Range
Dim riga As Long

On Error GoTo fine 'esci se non rispondo
num = InputBox("Digitare un numero da 1 a 90")
If Not num >= 1 Or Not num <= 90 Then Exit Sub 'esci se immesso numero non previsto
Application.ScreenUpdating = False
With Worksheets("Foglio1")
Set rng = .Range("A1:C" & .Cells(Rows.Count, 1).End(xlUp).Row) 'rilevo l'area da gestire
For riga = rng.Rows.Count To 1 Step -1 'ciclo tutte le righe
'verifico se c'è il numero nella riga
If Not Application.WorksheetFunction.CountIf(.Range("C" & riga & ":C" & riga), num) > 0 Then
rng.Rows(riga).EntireRow.Delete 'altrimenti elimino l'intera riga
End If
Next riga
End With
Application.ScreenUpdating = True
fine:
End Sub
Buon giorno a tutti ho provato a modificare questa macro ma non ho il risultato che volevo. Se riuscite per favore a vedere l'errore.
[Edited by gattodimarmo1980 8/24/2019 11:29 AM]
Post: 2,347
Registered in: 4/6/2013
Location: ROMA
Age: 71
Veteran User
2010
OFFLINE
8/24/2019 12:55 PM
 
Modify
 
Delete
 
Quote

prova:

.......
If Application.WorksheetFunction.CountIf(.Range("A" & riga & ":C" & riga), num) = 0 Then
.......

saluti




Domenico
Win 10 - Excel 2016
Post: 163
Registered in: 10/3/2015
Location: ALBAREDO PER SAN MARCO
Age: 39
Junior User
2003
OFFLINE
8/24/2019 2:32 PM
 
Modify
 
Delete
 
Quote

Ottimo Domenico ti ringranzio molto.Ciao Matteo
Admin Thread: | Close | Move | Delete | Modify | Email Notification Previous page | 1 | Next page
New Thread
 | 
Reply
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Home Forum | Bacheca | Album | Users | Search | Log In | Register | Admin
Tutti gli orari sono GMT+01:00. Adesso sono le 10:35 AM. : Printable | Mobile | Regolamento | Privacy
FreeForumZone [v.5.0.0] - Copyright © 2000-2019 FFZ srl - www.freeforumzone.com