Suchen und Ersetzen von Zellenwertmakros
Suchen und Ersetzen von Zellenwertmakros

Problem
Ich habe diese 20 Formeln (1 pro Aktiencode) in meiner Tabelle, die von etrade stammen
= PROStaticData (2, "mqg.ASX", "2010/08/10; 2010/08/19; 3; Wahr; Falsch", "10")
Ich möchte in der Lage sein, die Daten auf einmal zu ändern. Ich habe die 2 Zellen eingerichtet. Die Werte, nach denen ich suchen möchte, befinden sich in M8 und M9. Ich möchte sie durch die Werte in L8 bzw. L9 ersetzen. Das funktioniert überall In der Tabelle wird außer in der obigen Formel aus irgendeinem Grund die Formel nicht durchgesehen. Der folgende Code wird von mir verwendet.
Sub theone () 'Selection.Replace What: = "ValueToFind", Ersetzung: = Range ("A1"). Value, LookAt: = xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, ReplaceFormat: = False 'Range ("B1: B2"). Select Selection.Copy Range ("L8: L9"). Select Selection.PasteSpecial Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks _: = False, Transpose: = False Range ( "M8"). Wählen Sie Application.CutCopyMode = False Selection.Copy Range ("L8"). Wählen Sie Application.CutCopyMode = False Selection.Copy Cells.Replace What: = Range ("M8"). Value, Replacement: = Range ( "L8"). Value, LookAt: = _ xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False Cells.Replace What: = Range ("M9"). Value, Replacement: = Bereich ("L9"). Wert, LookAt: = _ xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False Bereich ("L8: L9"). Wählen Sie Application.CutCopyMode = False Selection.Copy Range ("M8: M9"). Wählen Sie ActiveSheet.Paste End Sub
Lösung
Hier sind einige Zweifel in Ihrem Makro
Beispiel
Bereich ("M8"). Wählen Sie Application.CutCopyMode = False Selection.Copy
Du kopierst diesen Wert, fügst ihn aber nie ein und gleich mit dem nächsten Block mit L8. Möglicherweise wird kein Code benötigt oder Sie haben das Einfügen vergessen. Der Grund, warum Sie es nicht ersetzen können, liegt darin, dass das Datum in der Formel im Format JJJJ / MM / TT vorliegt. Das Datum, nach dem Sie suchen, ist nicht in diesem Format. Sie müssen also ein weiteres Suchen und Ersetzen hinzufügen, in dem Sie nach dem Datum im Format JJJJ / MM / TT suchen und in demselben ersetzen
Cells.Replace What: = FORMAT (Bereich ("M8"). Wert, "JJJJ / MM / TT"), Replacement: = FORMAT (Bereich ("L8"). Wert, "JJJJ / MM / TT"), LookAt : = _ xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False
Hier ist dein überarbeitetes Zeug.
Sub theone () Dim sDateFind As String Dim sDateRep As String-Bereich ("B1: B2"). Select Selection.Copy Range ("L8: L9"). Select Selection.PasteSpecial Paste: = xlPasteValues, _ Operation: = xlNone, _ SkipBlanks: = False, _ Transpose: = False Range ("M8"). Select Application.CutCopyMode = False Selection.Copy Range ("L8"). Select Application.CutCopyMode = False Selection.Copy sDateFind = Range ("M8") .Value sDateRep = Range ("L8"). Value Cells.Replace What: = Range ("M8"). Value, _ Replacement: = Range ("L8"). Value, _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False Cells.Replace What: = Format (sDateFind, "yyyy / mm / dd"), _ Replacement: = Format (sDateRep, "yyyy / mm / dd "), _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False sDateFind = Range (" M9 "). Value sDateRep = Range (" L9 ") .Wertzellen.Ersetzen Was: = Bereich (" M9 "). Wert, _ Ersetzung: = Bereich (" L9 "). Wert, _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False Cells.Replace What: = Format (sDateFind, "yyyy / mm / dd"), _ Replacement: = Format (sDateRep, "yyyy / mm / dd"), _ LookAt : = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False Range ("L8: L9"). Wählen Sie Application.CutCopyMode = False Selection.Copy Range ("M8: M9 "). Wählen Sie ActiveSheet.Paste End Sub
Hinweis
Gelöst von rizvisa1