Намерете и заменете макроса на стойността на клетката

Намерете и заменете макроса на стойността на клетката

Проблем

Имам тези 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

Предишна Статия Следваща Статия

Топ Съвети