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. Eliminata

    Questa risposta è stata eliminata a causa di una violazione del codice di comportamento. La risposta è stata segnalata manualmente o identificata tramite il rilevamento automatizzato prima dell'esecuzione dell'azione. Per ulteriori informazioni, fai riferimento al codice di comportamento.


    I commenti sono stati disattivati. Ulteriori informazioni

  2. Anonimo
    2012-03-28T07:04:02+00:00

    E' tutto chiaro,

    grazie

    Grazie a te per il cortese riscontro.

    Buona giornata e buon lavoro.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-03-27T16:29:01+00:00

    E' tutto chiaro,

    grazie

    La risposta è stata utile?

    0 commenti Nessun commento