Problemi di "duplicazione" della formattazione condizionale nella cella

Anonimo
2012-03-25T21:36:20+00:00

Ho duplicato il foglio1 e go chiamato la copia foglio2. Ho cancellato tutti i valori, la sciando la sola formattazione. Ogni qualvolta ripristino la formattazione del foglio1 copiando la formattazione del foglio2 rilevo (da "Gestione regole...") che la formattazione condizionale del foglio 1 si raddoppia. Se eseguo nuovamente la copia si triplica e così via. Come faccio ad eliminare questo inconveniente?

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2012-03-27T13:51:06+00:00

Le righe 1 e 3  iniziano con un punto (sottintendono la variabile sh1)

la riga 2 invece inizia con la variabile sh2 e sembra non far parte dello stesso raggruppamento With.

E' una forma che non avevo mai visto prima!

Grazie ancora

Si chiama: programmazione ad oggetti ed evita quelli che sono gli errori più comuni.

Ecco il codice commentato:

Public Sub m()

'in caso di errore

On Error GoTo RigaErrore

    'dichiaro due variabili di tipo Worksheet

    Dim sh1 As Worksheet

    Dim sh2 As Worksheet

    'NomeOggetto With permette di scrivere

    'meno codice riferendosi a metodi/proprietà/eventi

    'dell'oggetto che viene prima del With; qui sotto

    'il Workbook che contiene il codice

    With ThisWorkbook

        'metto un riferimento ai fogli per

        'ciascuna variabile

        Set sh1 = .Worksheets("Foglio1")

        Set sh2 = .Worksheets("Foglio2")

    End With

    'qui sotto With consente di gestire

    'metodi/proprietà/eventi del Foglio1

    'al quale sh1 fa riferimento

    With sh1

        'elimino la formattazione del Foglio1

        'per il Range specificato

         .Range("A1:C12").ClearFormats

         'copio la formattazione del Foglio2

         'per il Range specificato; devo mettere sh2

         'perchè sono all'interno del With riferito

         'a sh1

         sh2.Range("A1:C12").Copy

        'incollo la formattazione nel Foglio1

         'per il Range specificato

         .Range("A1:C12").PasteSpecial xlPasteFormats

    End With

'riga sempre eseguita

RigaChiusura:

    'Set a Nothing delle variabili oggetto

     Set sh2 = Nothing

     Set sh1 = Nothing

     Exit Sub

'in caso di errore

RigaErrore:

    'restituisco nella MsgBox il numero ed il tipo di errore

     MsgBox Err.Number & vbNewLine & Err.Description

     'vado alla riga di chiusura

     Resume RigaChiusura

End Sub

E vedi qui:

http://www.maurogsc.eu/excel/xlsmisteriosacellaa1.aspx

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2012-03-27T07:41:16+00:00

Semplificando il codice è il seguente:

<cut>

In ogni caso penso di aver risolto il problema. Non sono certo però delle cause.

Ho eseguito questi passi:

  1. ho spostato il file dal desktop in una cartella appositamente creata;
  2. ho cancellato tutta la formattazione condizionale dal foglio 1;
  3. ho salvato il file;
  4. ho eseguito la routine "Imposta formato" per ben 3 volte;
  5. ho verificato la situazione in "Gestione Regole..." e ho contstato che la formattazione è stata copiata correttamente e che non vi sono duplicati (come desiderato).

Grazie

Se hai risolto, bene così.

Non vedo però che tu abbia eliminato la vecchia formattazione prima di incollare la nuova.

Inoltre non ho capito cosa deve fare il tuo codice (colpa mia). Io eviterei però inutili select.

Semplificando, la macro qui sotto elimina la formattazione condizionale dal Foglio1 nel Range A1:C10 e le applica quella del Range A1:C10 del Foglio2:

Public Sub m()

On Error GoTo RigaErrore

    Dim sh1 As Worksheet

    Dim sh2 As Worksheet

    With ThisWorkbook

        Set sh1 = .Worksheets("Foglio1")

        Set sh2 = .Worksheets("Foglio2")

    End With

    With sh1

        .Range("A1:C12").ClearFormats

        sh2.Range("A1:C12").Copy

        .Range("A1:C12").PasteSpecial xlPasteFormats

    End With

RigaChiusura:

    Set sh2 = Nothing

    Set sh1 = Nothing

    Exit Sub

RigaErrore:

    MsgBox Err.Number & vbNewLine & Err.Description

    Resume RigaChiusura

End Sub

La risposta è stata utile?

0 commenti Nessun commento

12 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2012-03-26T10:15:52+00:00

     

    Ho fatto l'esempio di due caselle, per semplicità,  ma in realta parlo di due fogli della stessa cartella, uno dei quali mi serve per ripristinare la formattazione di default nel caso questa andasse persa.

    Mi sembra che l'unica soluzione (ancora da verificare) sia quella di eliminare le formattazioni condizionali del foglio di lavoro (foglio1) e di ripristinarle con copy formato dal foglio2. Ripetendo più volte l'operazione di copy sembra (ma non ne sono ancora sicuro!)che l'inconveniente non si verifichi.

    Non è molto chiara la questine.

    Continuo a non capire. Se le formattazioni sono identiche:

    • Elimini la vecchia formattazione condizionale delle celle
    • Copi da dove vuoi la nuova

    Inoltre io non riscontro problemi a fare ciò:

    • Ho una determinata formattazione condizionale in A1 del Foglio1
    • Ho una Formattazione condizionale diversa in A1 del Foglio2
    • Copio la formattazione dellla cella A1 del Foglio1(Copia formato)
    • Faccio click sulla cella A1 del Foglio2
    • Ho in cella A1 del Foglio1 *solo una formattazione*.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2012-03-26T08:28:51+00:00

    Vorrei che non si duplicasse!

    Puoi fare l'esperimento con due caselle, ad esempio la casella A1 e la casella A3.

    Applico la formattazione condizionale alla casella A1 (oltre naturalmente alle altre formattazioni) e copio questa formattazione nella casella A3.

    Questa casella mi dovrà servire per ripristinare la formatazione originaria nella casella A1.

    Quando però copio questa formattazione nella casella A1 la formattazione si duplica, ossia in  "Visualizza regole" vedo che le righe di  formattazione condizionale vengono ripetute. Se eseguo nuovamente la copia esse vengono triplicate, ecc.

    Questo a svantaggio delle dimensione del file... e non so quale altro inconveniente potrebbe dare nel futuro!

    Ho fatto l'esempio di due caselle, per semplicità,  ma in realta parlo di due fogli della stessa cartella, uno dei quali mi serve per ripristinare la formattazione di default nel caso questa andasse persa.

    Mi sembra che l'unica soluzione (ancora da verificare) sia quella di eliminare le formattazioni condizionali del foglio di lavoro (foglio1) e di ripristinarle con copy formato dal foglio2. Ripetendo più volte l'operazione di copy sembra (ma non ne sono ancora sicuro!)che l'inconveniente non si verifichi.

    Non è molto chiara la questine.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-03-26T07:03:57+00:00

    Ho duplicato il foglio1 e go chiamato la copia foglio2. Ho cancellato tutti i valori, la sciando la sola formattazione. Ogni qualvolta ripristino la formattazione del foglio1 copiando la formattazione del foglio2 rilevo (da "Gestione regole...") che la formattazione condizionale del foglio 1 si raddoppia. Se eseguo nuovamente la copia si triplica e così via. Come faccio ad eliminare questo inconveniente?

    Forse non ho capito, ma cancellare la formattazione del foglio *prima* di copiare quella dell'altro?

    Altrimenti quello che succede mi sembra logico8sempre se ho capito).

    Tu, esattamente, cosa vorresti accadesse?

    Grazie.

    La risposta è stata utile?

    0 commenti Nessun commento