Hitta och ersätt cellvärdesmakro

Hitta och ersätt cellvärdesmakro

Problem

Jag har dessa 20 formler (1 per lagerkod) i mitt kalkylblad som kommer från etrade

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

jag vill kunna byta datum på en gång, jag har de två cellerna som ställer in de värden jag vill leta efter är i M8 och M9 och jag vill ersätta den med värdena i L8 respektive L9 och det fungerar bra överallt i kalkylbladet utom i ovanstående formel av någon anledning kommer det inte att se igenom formeln för det följande är koden jag använder.

 Subone () 'Selection.Replace What: = "ValueToFind", Ersättning: = Område ("A1"). Värde, LookAt: = xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, ReplaceFormat: = False, ReplaceFormat: = Falskt område ("B1: B2"). Välj Selection.Copy Range ("L8: L9"). Välj Selection.PasteSpecial Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks _: = False, Transpose: = False Range "M8"). Välj Application.CutCopyMode = False Selection.Copy Range ("L8"). Välj Application.CutCopyMode = False Selection.Copy Cells.Replace What: = Område ("M8"). Värde, Ersättning: = Räckvidd "L8"). Värde, LookAt: = _ xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False Cells.Replace What: = Område ("M9"). Värde, ersättning: = Område ("L9"). Värde, LookAt: = _ xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False Range ("L8: L9"). Välj Application.CutCopyMode = Falskt Selection.Copy Range ("M8: M9"). Välj ActiveSheet.Paste End Sub 

Lösning

Här är några tvivel i ditt makro

Exempel

 Range ("M8"). Välj Application.CutCopyMode = False Selection.Copy 

Du kopierar det här värdet, men klistra aldrig in det och samma med nästa block med L8. Det kan hända att koden inte behövs, eller kanske du glömde att klistra in. Anledningen till att du inte kan ersätta den, eftersom datumet i formeln är format YYYY / MM / DD. Datumet du söker är inte i det formatet. Så du måste lägga till ytterligare en sökning och ersätta var du söker efter datum i YYYY / MM / DD-format och ersätt i samma

 Cells.Replace What: = FORMAT (Range ("M8"). Värde, "ÅÅÅÅ / MM / DD"), Byte: = FORMAT (Område ("L8"). Värde, "ÅÅÅÅ / MM / DD"), LookAt : = _ xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False 

Här är dina omarbetade saker.

 Underton () Dimma sDateFind Som String Dim sDateRep Som String Range ("B1: B2"). Välj Selection.Copy Range ("L8: L9"). Välj Selection.PasteSpecial Paste: = xlPasteValues, _ Operation: = xlNone, _ SkipBlanks: = False, _ Transpose: = False Range ("M8"). Välj Application.CutCopyMode = False Selection.Copy Range ("L8"). Välj Application.CutCopyMode = False Selection.Copy sDateFind = Range ("M8") .Value sDateRep = Område ("L8"). Värdeceller .Replace Vad: = Område ("M8"). Värde, _ Byte: = Område ("L8"). Värde, _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False Cells.Replace What: = Format (sDateFind, "yyyy / mm / dd"), _ Byte: = Format (sDateRep, "yyyy / mm / dd "), _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False sDateFind = Område (" M9 "). Värde sDateRep = Område ") .Value Cells.Replace Vad: = Område (" M9 "). Värde, _ Byte: = Område (" L9 "). Värde, _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False Cells.Replace What: = Format (sDateFind, "yyyy / mm / dd"), _ Byte: = Format (sDateRep, "yyyy / mm / dd"), _ LookAt : = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False Range ("L8: L9"). Välj Application.CutCopyMode = False Selection.Copy Range ("M8: M9 "). Välj ActiveSheet.Paste End Sub 

Notera

Löst av rizvisa1

Tidigare Artikel Nästa Artikel

Bästa Tipsen