Намерете и заменете макроса на стойността на клетката
Намерете и заменете макроса на стойността на клетката
Проблем
Имам тези 20 формули (1 на стоков код) в моята електронна таблица, които идват от etrade
= PROStaticData (2, "mqg.ASX", "2010/08/10; 2010/08/19; 3; True; False", "10")
Искам да бъда в състояние да променят датите наведнъж, имам 2 клетки настройка на стойностите, които искам да търся са в M8 и M9 и аз искам да го замени със стойностите в L8 и L9 съответно и това работи добре навсякъде в електронната таблица, с изключение на горната формула по някаква причина, тя няма да погледне през формулата за него следното е кодът, който използвам.
Подмяна на () 'Selection.Replace Какво: = "ValueToFind", Замяна: = Обхват ("A1"). Стойност, LookAt: = xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, ReplaceFormat: = False 'Обхват ("B1: B2") Изберете Selection.Copy Range ("L8: L9") Изберете Selection.PasteSpecial Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks _: = False, Transpose: = False Range Изберете Application.CutCopyMode = False Selection.Copy Range ("L8"). Изберете Application.CutCopyMode = False Selection.Copy Cells.Replace Какво: = Обхват ("M8"). Стойност, Замяна: = Обхват ( Стойност, LookAt: = _ xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False Cells.Replace Какво: = Обхват ("M9"). Стойност, Замяна: = Обхват ("L9"). Стойност, LookAt: = _ xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False Range ("L8: L9"). Изберете Application.CutCopyMode = False Selection.Copy Range (Избор на фалшиви копия) ("M8: M9"). Изберете ActiveSheet.Paste End Sub
Решение
Ето няколко съмнения във вашия макрос
пример
Обхват ("M8") Изберете Application.CutCopyMode = False Selection.Copy
Копирате тази стойност, но никога не я поставяйте и същото със следващия блок с L8. Може би кодът не е необходим или може би сте забравили да го поставите. Причината, поради която не можете да я замените, защото датата във формулата е във формат ГГГГ / ММ / ДД. Датата, която търсите, не е в този формат. Така че трябва да добавите още едно търсене и да замените мястото, където търсите дата във формат ГГГГ / ММ / ДД и да го замените
Cells.Replace What: = FORMAT (Обхват ("M8"). Стойност, "ГГГГ / ММ / ДД"), Замяна: = ФОРМАТ (Обхват ("L8"). Стойност, "ГГГГ / ММ / ДД"), LookAt : = _ xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False
Ето ви преработените неща.
Sub theone () Dim sDateFind As String Dim sDateRep As String Range ("B1: B2") Изберете Selection.Copy Range ("L8: L9"). Изберете Selection.PasteSpecial Paste: = xlPasteValues, _ Operation: = xlNone, _ SkipBlanks: = False, _ Transpose: = False Range ("M8") Изберете Application.CutCopyMode = False Selection.Copy Range ("L8") Изберете Application.CutCopyMode = False Selection.Copy sDateFind = Range ("M8") Стойност Cells.Replace Какво: = Обхват ("M8"). Стойност, _Замяна: = Обхват ("L8"). Стойност, _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False Cells.Replace Какво: = Формат (sDateFind, "гггг / мм / дд"), _ Замяна: = Формат (sDateRep, "гггг / мм / dd "), _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False sDateFind = Обхват (" M9 "). Стойност, _Замяна: = Обхват ("L9"). Стойност, _Поглед: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False Cells.Replace Какво: = Формат (sDateFind, "yyyy / mm / dd"), _ Замяна: = Формат (sDateRep, "yyyy / mm / dd"), _ LookAt : = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False Range ("L8: L9"). Изберете Application.CutCopyMode = False Selection.Copy Range ("M8: Изберете ActiveSheet.Paste End Sub
Забележка
Решен от rizvisa1