Condividi tramite

Funzione Replace

Anonimo
2015-05-21T12:32:19+00:00

Ciao a tutti!

Ho questo codice

    Sheets("BubbleGraph").Range("bg6:bg7").Replace What:="sum(", Replacement:="sumif(Check,"">0"",", MatchCase:=False

In teoria dovrebbe sostituire la stringa di testo

    SUM(

con

    SUMIF(Check,">0",

Il problema, che non mi so spiegare, è che lo fa su tutti i fogli della cartella corrente e non solo in Sheets("BubbleGraph").Range("bg6:bg7")

Come mai?

Peraltro credo di aver colto che se in precedenza ho eseguito manualmente un comando di ricerca o sostituzione sul solo foglio attivo, qualsiasi questo sia, il comando vba esegue la sostituzione solo sul foglio "BubbleGraph" (che viene attivato in precedenza dalla macro) altrimenti, se ho eseguito una ricerca/sostituzione sull'intero workbook, il codice vba esegue la sostituzione su tutto il workbook...da cui una domanda: qual è il codice che esegue il replacemente solo sul foglio attivo (come se impostassi questo parametro nella dialog standard del comando trova/sostituisci)

Grazie x l'aiuto

Sergiovery

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

  1. Anonimo
    2015-05-21T14:33:56+00:00

    Ciao Sergiovery,

    un esempio:

    Public Sub Test1()

    Dim rngSrc  As Excel.Range

        Set rngSrc = ['Foglio 1'!C4:C8]

        rngSrc.Replace What:="a", _

                       Replacement:="x", _

                       LookAt:=xlWhole, _

                       SearchOrder:=xlByColumns, _

                       MatchCase:=False

    End Sub

    con questo codice tutte le occorrenze di "a" nell'intervallo C4:C8 (e solo in quell'intervallo) del "Foglio 1" vengono sostituite con "x".

    EDIT:

    Momento... Cancella tutto. Ora ho capito cosa vuoi dire. A dopo.

    La risposta è stata utile?

    0 commenti Nessun commento

6 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-05-21T14:59:24+00:00

    Ottimo mica tanto, come dicevo nell'Edit al mio precedente post. Quel metodo funziona solo se prima non è stata fatta una ricerca/sostituzione in tutta la Cartella di lavoro. Altrimenti fallisce miseramente, come hai già constatato tu a proposito dell'argomento "In".

    Ottima la tua ricerca dummy, invece. Che rimette le cose a posto. Me la segno.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-05-21T14:44:30+00:00

    Ottimo!

    Grazie

    Sergiovery

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-05-21T13:55:37+00:00

    Ciao Maurizio,

    grazie per il riscontro.

    Mi resta però il dubbio.

    Confermata la supposizione ("quando si richiama il metodo la volta successiva, verranno utilizzati i valori salvati"), diventa più consistnte la domanda: come si fa a reimpostare/resettare i valori che la funzione Replace deve utilizzare. Ovvero: a prescindere dall'uso fatto manualmente l'ultima volta che è stata utilizzata la funzione Sostituisci, come si fa ad impostare via vba la funzione Replace in modo che si applicata solo (ad esempio) sul Foglio corrente?

    Ovvero-bis: esiste una parte del codice che permette di modificare anche l'informazione "In" della dialog Sostituisci?

    ...sempre che ciò sia fattibile...

    Intanto ho trovato un "work-around": ad inizio macro inserisco questa stringa di codice

        Set dummy = Worksheets(1).Range("A1:A1").Find("Dummy", LookIn:=xlValues)

    che non fa altro che eseguire una ricerca "finta" che imposta "In" su "Foglio" nella dialog Trova/Sostituisci...e pur nella sua pochezza, sembra funzionare.

    Grazie

    Sergiovery

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-05-21T13:24:21+00:00

    Ciao Sergiovery,

    come dice la guida...

    Osservazioni

    Le impostazioni di LookAt, SearchOrder, MatchCase e MatchByte vengono salvate ogni volta che si utilizza questo metodo. Se non si specificano valori per questi argomenti quando si richiama il metodo la volta successiva, verranno utilizzati i valori salvati. L'impostazione di questi argomenti comporta la modifica delle impostazioni nella finestra di dialogo Trova. Quest'ultima modifica nella finestra di dialogo Trova comporta a sua volta la modifica dei valori utilizzati se si omettono gli argomenti. Per evitare problemi, impostare questi argomenti esplicitamente ogni volta che si utilizza questo metodo.

    EDIT:

    Vedi Range.Replace Method (Excel)(in inglese).

    La risposta è stata utile?

    0 commenti Nessun commento