Condividi:        

Aggiungere una riga vergine, senza formattazioni non volute.

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Aggiungere una riga vergine, senza formattazioni non volute.

Postdi Alessandro999 » 08/03/18 13:03

Ciao :) ,

Su un foglio di esempio che di seguito allego (per farmi capire meglio) non riesco a far aggiungere tramite macro una nuova riga sul foglio di calcolo (Foglio1) senza fargli ereditare la formattazione di alcune celle, questo accade quando fra una riga e la successiva non ci sono righe vuote (evento che può capitare perchè nella macro ho inserito un opzione x per eliminare righe vuote a scelta che può tornare utile perchè il foglio sarà protetto).

Ho provato l'istruzione ClearFormats ma non viene considerata. si tratta della macro sul modulo2 (l'istruzione: If .Cells(riga, 2).Value = "AGGIUNGI RIGA" Then .Rows(riga).Insert Shift:=xlShiftDown) qualcuno può aiutarmi grazie.

http://www.filedropper.com/esempio_12

Immagine

...

Immagine
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Sponsor
 

Re: Aggiungere una riga vergine, senza formattazioni non vol

Postdi patel » 08/03/18 21:36

Codice: Seleziona tutto
Sub riga()
ActiveCell.EntireRow.Insert Shift:=xlShiftDown
ActiveCell.EntireRow.ClearFormats
End Sub
patel
Utente Senior
 
Post: 309
Iscritto il: 24/04/12 16:03

Re: Aggiungere una riga vergine, senza formattazioni non vol

Postdi Alessandro999 » 09/03/18 11:06

Ciao Patel egrazie per la risposta, ho inserito il codice nella macro del modulo2, ma crea alcuni problemi, cancella le formattazioni ma non riesce a cancellare il menù a tendina nella cella B quando ci sono due righe appaiate, la riga vuota aggiunta risulta tutta con le celle protette, quindi in un secondo tempo non è possibile inserire il carattere x in cella B per cancellare la riga. Mentre se si sceglie dal menu a tendina l' opzione nascondi riga e poi successivamente si rende visibile la riga premendo sul pulsante mostra righe nascoste, questa riappare senza formattazioni.

di seguito il codice del modulo2

e il nuovo file di esempio :

provando le varie opzioni del menu a tendina si riesce a capire bene i vari problemi di funzionamento che presenta la macro.

http://www.filedropper.com/esempio_13

Codice: Seleziona tutto
Sub Controlli_Riga()

Sheets("Foglio1").Unprotect Password:="12345"

Dim check As Long

Dim riga As Long

With Sheets("Foglio1")

    check = .Range("B" & Rows.Count).End(xlUp).Row
   
    For riga = check To 1 Step -1
       
        If .Cells(riga, 2).Value = "NASCONDI RIGA" Then Rows(riga).Hidden = True
       
        If .Cells(riga, 2).Value = "ELIMINA RIGA" Then .Rows(riga).Delete
           
        If .Cells(riga, 2).Value = "AGGIUNGI RIGA" Then .Rows(riga).Insert Shift:=xlShiftDown
       
            ActiveCell.EntireRow.ClearFormats
       
        If .Cells(riga, 2).Value = "x" Then .Rows(riga).Delete ' cancella riga con la x in cella B
       
    Next riga

End With

Sheets("Foglio1").Protect Password:="12345"

End Sub



Grazie e un saluto a tutti, attendo e spero in una risposta.
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Aggiungere una riga vergine, senza formattazioni non vol

Postdi Anthony47 » 12/03/18 00:01

Allora tu vuoi che la riga aggiunta non abbia formattazione e sia sprotetta (mentre di base un'area e' impostata come Protetta). Allora invece di ActiveCell.EntireRow.ClearFormats usa
Codice: Seleziona tutto
        .Cells(riga, 2).EntireRow.Clear
        .Cells(riga, 2).EntireRow.Locked = False
        .Cells(riga, 2).EntireRow.FormulaHidden = False


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Aggiungere una riga vergine, senza formattazioni non vol

Postdi Alessandro999 » 12/03/18 13:32

Anthony47 ha scritto:Allora tu vuoi che la riga aggiunta non abbia formattazione e sia sprotetta (mentre di base un'area e' impostata come Protetta). Allora invece di ActiveCell.EntireRow.ClearFormats usa
Codice: Seleziona tutto
        .Cells(riga, 2).EntireRow.Clear
        .Cells(riga, 2).EntireRow.Locked = False
        .Cells(riga, 2).EntireRow.FormulaHidden = False


Ciao


Ciao Anthony e grazie per la risposta, ho aggiunto il tuo spezzone di codice al posto dell' istruzione che hai indicato, ma la macro continua a fare le bizze, ora premendo il pulsante (test macro) ignora quanto selezionato nel menù a tendina posto nelle celle B e cancella tutto quello che c'è sul foglio... allego il file xlsm, selezionando un opzione (tendina) di una riga a caso e premendo sul pulsante arancione si dovrebbe vedere bene il problema che forse a parole non riesco a spiegarlo come si deve. la macro è quella nel modulo2

FILE EXCEL

http://www.filedropper.com/esempio_14


ciao e vista l'ora buon pranzo.
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Aggiungere una riga vergine, senza formattazioni non vol

Postdi Anthony47 » 12/03/18 15:09

Quel blocco di istruzioni va usate nel caso che venga inserita una riga, mentre come risulta nel file allegato viene eseguito sempre, quindi azzerando qua e là indiscriminatamente.
Devi cioe' elimina
If .Cells(riga, 2).Value = "AGGIUNGI RIGA" Then .Rows(riga).EntireRow.Insert Shift:=xlShiftDown ' quando ci sono due righe attaccate, aggiunge una riga vuota fra l'una e l'altra
'ActiveCell.EntireRow.ClearFormats '<<< patel
.Cells(riga, 2).EntireRow.Clear '<<< blocco Anthony
.Cells(riga, 2).EntireRow.Locked = False
.Cells(riga, 2).EntireRow.FormulaHidden = False


e inserisci invece
Codice: Seleziona tutto
        If .Cells(riga, 2).Value = "AGGIUNGI RIGA VUOTA" Then
            .Rows(riga).EntireRow.Insert Shift:=xlShiftDown  ' quando ci sono due righe attaccate, aggiunge una riga vuota fra l'una e l'altra
            'ActiveCell.EntireRow.ClearFormats   '<<< patel
            .Cells(riga, 2).EntireRow.Clear      '<<< blocco Anthony
            .Cells(riga, 2).EntireRow.Locked = False
            .Cells(riga, 2).EntireRow.FormulaHidden = False
        End If

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Aggiungere una riga vergine, senza formattazioni non vol

Postdi Alessandro999 » 12/03/18 15:52

Anthony47 ha scritto:Quel blocco di istruzioni va usate nel caso che venga inserita una riga, mentre come risulta nel file allegato viene eseguito sempre, quindi azzerando qua e là indiscriminatamente.
Devi cioe' elimina
If .Cells(riga, 2).Value = "AGGIUNGI RIGA" Then .Rows(riga).EntireRow.Insert Shift:=xlShiftDown ' quando ci sono due righe attaccate, aggiunge una riga vuota fra l'una e l'altra
'ActiveCell.EntireRow.ClearFormats '<<< patel
.Cells(riga, 2).EntireRow.Clear '<<< blocco Anthony
.Cells(riga, 2).EntireRow.Locked = False
.Cells(riga, 2).EntireRow.FormulaHidden = False


e inserisci invece
Codice: Seleziona tutto
        If .Cells(riga, 2).Value = "AGGIUNGI RIGA VUOTA" Then
            .Rows(riga).EntireRow.Insert Shift:=xlShiftDown  ' quando ci sono due righe attaccate, aggiunge una riga vuota fra l'una e l'altra
            'ActiveCell.EntireRow.ClearFormats   '<<< patel
            .Cells(riga, 2).EntireRow.Clear      '<<< blocco Anthony
            .Cells(riga, 2).EntireRow.Locked = False
            .Cells(riga, 2).EntireRow.FormulaHidden = False
        End If

Ciao




Ok, ho provato e ora funziona :) , se posso vorrei chiederti se semplificata in questo modo sarebbe altrettanto corretta o se presenta qualche vizio. (ho tolto with perchè senza mi ci raccapezzo meglio :oops: )


Codice: Seleziona tutto
Sub Controlli_Riga()

Sheets("Foglio1").Unprotect Password:="12345"

Dim check As Long

Dim riga As Long

    check = Sheets("Foglio1").Range("B" & Rows.Count).End(xlUp).Row
   
    For riga = check To 1 Step -1
       
        If Sheets("Foglio1").Cells(riga, 2).Value = "NASCONDI RIGA" Then
       
           Sheets("Foglio1").Rows(riga).Hidden = True
           
           Else
       
        If Sheets("Foglio1").Cells(riga, 2).Value = "ELIMINA RIGA" Then
           
           Sheets("Foglio1").Rows(riga).Delete

           Else
       
        If Sheets("Foglio1").Cells(riga, 2).Value = "x" Then
       
           Sheets("Foglio1").Rows(riga).Delete 
           
           Else
       
        If Sheets("Foglio1").Cells(riga, 2).Value = "AGGIUNGI RIGA VUOTA" Then
       
           Sheets("Foglio1").Rows(riga).EntireRow.Insert Shift:=xlShiftDown 

           Sheets("Foglio1").Cells(riga, 2).EntireRow.Clear      '<<< blocco Anthony
           Sheets("Foglio1").Cells(riga, 2).EntireRow.Locked = False
           Sheets("Foglio1").Cells(riga, 2).EntireRow.FormulaHidden = False
             
    End If
    End If
    End If
    End If
   
    Next riga


Sheets("Foglio1").Protect Password:="12345"

End Sub



Grazie Anthony
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Aggiungere una riga vergine, senza formattazioni non vol

Postdi Anthony47 » 12/03/18 19:55

In casi come il tuo, dove ci sono varie situazioni da valutare in alternativa, la struttura piu' favorevole (o che a me piace di piu') e' la If /ElseIf /... /End If
Ho modificato la tua macro con questa struttura, ma il collaudo lo devi fare tu:
Codice: Seleziona tutto
Sub Controlli_Riga()

Sheets("Foglio1").Unprotect Password:="12345"
Dim check As Long
Dim riga As Long
check = Sheets("Foglio1").Range("B" & Rows.Count).End(xlUp).Row
For riga = check To 1 Step -1
    If Sheets("Foglio1").Cells(riga, 2).Value = "NASCONDI RIGA" Then
       Sheets("Foglio1").Rows(riga).Hidden = True
    ElseIf Sheets("Foglio1").Cells(riga, 2).Value = "ELIMINA RIGA" Then
       Sheets("Foglio1").Rows(riga).Delete
    ElseIf Sheets("Foglio1").Cells(riga, 2).Value = "x" Then
       Sheets("Foglio1").Rows(riga).Delete
    ElseIf Sheets("Foglio1").Cells(riga, 2).Value = "AGGIUNGI RIGA VUOTA" Then
       Sheets("Foglio1").Rows(riga).EntireRow.Insert Shift:=xlShiftDown
       Sheets("Foglio1").Cells(riga, 2).EntireRow.Clear      '<<< blocco Anthony
       Sheets("Foglio1").Cells(riga, 2).EntireRow.Locked = False
       Sheets("Foglio1").Cells(riga, 2).EntireRow.FormulaHidden = False
    End If
Next riga
Sheets("Foglio1").Protect Password:="12345"
End Sub


Poiche' la macro e' lanciata da Foglio1, potresti omettere "Sheets("Foglio1")." in tutte le istruzioni di tipo Cells o Range (il default e' l'ActiveSheet); al limite ci metti in testa Sheets("Foglio1").Select per essere sicuro di questo vincolo

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Aggiungere una riga vergine, senza formattazioni non vol

Postdi Alessandro999 » 13/03/18 09:26

Anthony47 ha scritto:In casi come il tuo, dove ci sono varie situazioni da valutare in alternativa, la struttura piu' favorevole (o che a me piace di piu') e' la If /ElseIf /... /End If
Ho modificato la tua macro con questa struttura, ma il collaudo lo devi fare tu:
Codice: Seleziona tutto
Sub Controlli_Riga()

Sheets("Foglio1").Unprotect Password:="12345"
Dim check As Long
Dim riga As Long
check = Sheets("Foglio1").Range("B" & Rows.Count).End(xlUp).Row
For riga = check To 1 Step -1
    If Sheets("Foglio1").Cells(riga, 2).Value = "NASCONDI RIGA" Then
       Sheets("Foglio1").Rows(riga).Hidden = True
    ElseIf Sheets("Foglio1").Cells(riga, 2).Value = "ELIMINA RIGA" Then
       Sheets("Foglio1").Rows(riga).Delete
    ElseIf Sheets("Foglio1").Cells(riga, 2).Value = "x" Then
       Sheets("Foglio1").Rows(riga).Delete
    ElseIf Sheets("Foglio1").Cells(riga, 2).Value = "AGGIUNGI RIGA VUOTA" Then
       Sheets("Foglio1").Rows(riga).EntireRow.Insert Shift:=xlShiftDown
       Sheets("Foglio1").Cells(riga, 2).EntireRow.Clear      '<<< blocco Anthony
       Sheets("Foglio1").Cells(riga, 2).EntireRow.Locked = False
       Sheets("Foglio1").Cells(riga, 2).EntireRow.FormulaHidden = False
    End If
Next riga
Sheets("Foglio1").Protect Password:="12345"
End Sub


Poiche' la macro e' lanciata da Foglio1, potresti omettere "Sheets("Foglio1")." in tutte le istruzioni di tipo Cells o Range (il default e' l'ActiveSheet); al limite ci metti in testa Sheets("Foglio1").Select per essere sicuro di questo vincolo

Ciao




Buongiorno Anthony,

Grazie per la risposta, ho copiato il tuo codice e ovviamente funziona... e anche più bello da vedere perchè più compatto, ho sostituito anche i riferimenti al Foglio1 sulle righe di Cells e Range con ActiveSheets, e sembra andare tutto bene.

Grazie ancora e buon proseguimento di giornata !
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Aggiungere una riga vergine, senza formattazioni non vol

Postdi Anthony47 » 13/03/18 15:09

ho sostituito anche i riferimenti al Foglio1 sulle righe di Cells e Range con ActiveSheets
Ma come detto questo e' superfluo: se scrivo Range("A1") o Cells(x, y) di default (se il codice si trova in un Modulo standard del vba) il riferimento e' al foglio attivo.
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Aggiungere una riga vergine, senza formattazioni non vol

Postdi Alessandro999 » 13/03/18 18:10

Anthony47 ha scritto:
ho sostituito anche i riferimenti al Foglio1 sulle righe di Cells e Range con ActiveSheets
Ma come detto questo e' superfluo: se scrivo Range("A1") o Cells(x, y) di default (se il codice si trova in un Modulo standard del vba) il riferimento e' al foglio attivo.
Ciao


Grazie Anthony per le precisazioni, sono sempre utili specie per chi come me non ha una visione abbastanza particolareggiata e tende a intricarsi da solo fra le varie formule e spesso commettendo errori banali :)


buona serata !
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia


Torna a Applicazioni Office Windows


Topic correlati a "Aggiungere una riga vergine, senza formattazioni non volute.":

Connettere pc senza wifi
Autore: nippon
Forum: Software Windows
Risposte: 8

Chi c’è in linea

Visitano il forum: Nessuno e 47 ospiti