Trova e sostituisci la macro del valore della cella

Trova e sostituisci la macro del valore della cella

Problema

Ho queste 20 formule (1 per codice) nel mio foglio di lavoro che provengono da etrade

= PROStaticData (2, "mqg.ASX", "2010/08/10; 2010/08/19; 3; True; False", "10")

voglio essere in grado di cambiare le date tutte in una volta, ho il setup a 2 celle i valori che voglio cercare sono in M8 e M9 e voglio sostituirlo con i valori in L8 e L9 rispettivamente e questo funziona bene ovunque nel foglio di calcolo ad eccezione della formula precedente, per qualche motivo non guarderà attraverso la formula per esso il seguente è il codice che sto usando.

 Sub theone () 'Selection.Replace What: = "ValueToFind", Sostituzione: = Range ("A1"). Value, LookAt: = xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, ReplaceFormat: = False 'Range ("B1: B2"). Seleziona Selection.Copy Range ("L8: L9"). Seleziona Selection.PasteSpecial Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks _: = False, Transpose: = False Range ( "M8"). Seleziona Application.CutCopyMode = False Selection.Copy Range ("L8"). Seleziona Application.CutCopyMode = False Selection.Copy Cells.Replace Cosa: = Intervallo ("M8"). Valore, Sostituzione: = Intervallo ( "L8"). Valore, LookAt: = _ xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False Cells.Replace Cosa: = Intervallo ("M9"). Valore, Sostituzione: = Intervallo ("L9"). Valore, LookAt: = _ xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False Range ("L8: L9"). Select Application.CutCopyMode = False Selection.Copy Range ("M8: M9"). Seleziona ActiveSheet.Paste End Sub 

Soluzione

Qui ci sono pochi dubbi nella tua macro

Esempio

 Intervallo ("M8"). Seleziona Application.CutCopyMode = False Selection.Copy 

Copia questo valore, ma non lo incolli mai e lo stesso con il blocco successivo con L8. Il codice potrebbe non essere necessario o forse hai dimenticato di incollare. Il motivo per cui non sei in grado di sostituirlo perché, la data che è in formula è in formato AAAA / MM / GG. La data che stai cercando non è in quel formato. Quindi devi aggiungere un'altra ricerca e sostituirla dove cerchi la data nel formato AAAA / MM / GG e sostituirla nello stesso modo

 Cells.Replace What: = FORMAT (Range ("M8"). Value, "YYYY / MM / DD"), Sostituzione: = FORMAT (Range ("L8"). Value, "YYYY / MM / DD"), LookAt : = _ xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False 

Ecco le tue cose rielaborate.

 Sub theone () Dim sDateFind As String Dim sDateRep As String Range ("B1: B2"). Seleziona Selection.Copy Range ("L8: L9"). Seleziona Selection.PasteSpecial Paste: = xlPasteValues, _ Operation: = xlNone, _ SkipBlanks: = False, _ Transpose: = False Range ("M8"). Seleziona Application.CutCopyMode = False Selection.Copy Range ("L8"). Seleziona Application.CutCopyMode = False Selection.Copy sDateFind = Intervallo ("M8") .Value sDateRep = Range ("L8"). Valore Cells.Replace What: = Range ("M8"). Value, _ Replacement: = Range ("L8"). Value, _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False Cells.Replace Cosa: = Formato (sDateFind, "aaaa / mm / gg"), _ Sostituzione: = Formato (sDateRep, "aaaa / mm / dd "), _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False sDateFind = Intervallo (" M9 "). Valore sDateRep = Intervallo (" L9 ") .Value Cells.Replace What: = Range (" M9 "). Value, _ Replacement: = Range (" L9 "). Value, _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False Cells.Replace Cosa: = Formato (sDateFind, "aaaa / mm / gg"), _ Sostituzione: = Formato (sDateRep, "aaaa / mm / gg"), _ LookAt : = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False Range ("L8: L9"). Seleziona Application.CutCopyMode = False Selection.Copy Range ("M8: M9 "). Seleziona Sottotitolo di ActiveSheet.Paste 

Nota

Risolto da rizvisa1

Articolo Precedente Articolo Successivo

I Migliori Consigli