2014-11-22 10 views
10

मैंने आज एक बहुत ही रोचक बग खोजा है। अगर यह बग है।सूत्रों में पाठ को प्रतिस्थापित करते समय बग मिला

क्या आप कृपया पुष्टि कर सकते हैं कि आप इसे दोहराना चाहते हैं या नहीं? यदि यह एक बग है और इसकी सूचना नहीं मिली है तो मैं इसे इस तरह दर्ज कर सकता हूं। मैं भी ठीक हूं अगर एक्सेल-एमवीपी में से कोई भी इसे एक बग के रूप में दर्ज करना चाहता है।

मान लें sheet1 सेल A1 में, आपके पास एक फॉर्मूला = $B$2+ $B$3 है। अब सुनिश्चित करें कि आपका सेल चुना गया है। अब इस कोड को मॉड्यूल में पेस्ट करें।

Sub Sample() 
    Dim r As Range, sPre As String, sAft As String 
    Dim ws As Worksheet 

    Set ws = ThisWorkbook.Sheets("Sheet1") 

    sPre = "$B$2": sAft = "$C$3" 

    On Error Resume Next 
    Set r = ws.Range("A1:A2").SpecialCells(xlCellTypeFormulas) 
    On Error GoTo 0 

    If Not r Is Nothing Then r.Replace what:=sPre, _ 
             replacement:=sAft, _ 
             lookat:=xlPart, _ 
             MatchCase:=False 
End Sub 

आदर्श रूप में कोड काम किया जाना चाहिए था और = $B$2+ $B$3सूत्र बार में = $C$3+ $B$3 करने के लिए बदल जाना चाहिए था लेकिन यह नहीं करता है। यह केवल तभी काम करेगा जब आप इसके माध्यम से कदम उठाते हैं या यदि आप अगली पंक्ति

अब एक बात करते हैं तो आप कार्य करेंगे। A1 या A2 के अलावा किसी भी सेल का चयन करें। अब यदि आप कोड चलाते हैं, तो कोड अपेक्षित काम करता है।

पहले मैंने सोचा कि मेरा एक्सेल पागल हो गया है इसलिए मैंने इसे बंद कर दिया और फिर से शुरू किया लेकिन मैं उपरोक्त को Excel 2010 में कई बार पुन: उत्पन्न करने में सक्षम था।

तब मैंने सोचा कि यह .SpecialCells समस्या है लेकिन उपर्युक्त व्यवहार इस कोड के साथ भी देखा जा सकता है।

Sub Sample() 
    Dim r As Range, sPre As String, sAft As String 
    Dim ws As Worksheet 

    Set ws = ThisWorkbook.Sheets("Sheet1") 

    sPre = "$B$2": sAft = "$C$3" 

    Set r = ws.Range("A1:A2") 

    r.Replace what:=sPre, _ 
       replacement:=sAft, _ 
       lookat:=xlPart, _ 
       MatchCase:=False 
End Sub 

क्या आप इसे दोहराने में सक्षम हैं?

+0

मैं Excel 2013 में यह दोहराने के लिए कर रहा था नहीं है –

+0

धन्यवाद @PradeepKumar :) –

+0

क्या होता है यदि आप तुरंत मैक्रो के बाद 'एफ 2, एंटर' का उपयोग करते हैं और फॉर्मूला बार अपडेट होने से पहले? – Jeeped

उत्तर

5

मैं आपकी समस्या को दोहराया और दो तरीके से इसके साथ भाग गया:

  1. ThisWorkbook.Save की जगह के बाद की कोशिश करो।

  2. फॉर्मूला को बदलने के बाद ए 1 या ए 2 (सेल चयनित जिसका सूत्र बदल रहा है) से अन्य सेल का चयन करें।

+0

+ 1 तो यहां तक ​​कि आप इसे दोहराने में सक्षम थे? बहुत बढ़िया। :) हाँ, मुझे दूसरे बिंदु से अवगत है। मैंने अपने प्रश्न में उल्लेख किया था। पहला व्यक्ति वास्तव में एक समाधान नहीं है क्योंकि कई अवसर हैं जब हम कार्यपुस्तिका को सहेजना नहीं चाहते हैं लेकिन केवल कुछ ऑपरेशन करें ... –

+0

आपके उत्तर में, क्या आप एक्सेल संस्करण की पुष्टि कर सकते हैं जिसका उपयोग आप करते समय कर रहे थे परीक्षण से ऊपर? –

+0

मैं अभी भी एक्सेल 2007 का उपयोग कर रहा हूँ! ए 1 या ए 2 के अलावा सेल का चयन करने के बारे में: मैं फॉर्मूला प्रतिस्थापन के बाद अन्य सेल का चयन करने के बारे में बात कर रहा था, प्रतिस्थापन से पहले नहीं। – ZAT

2

मैं आंशिक रूप से यह दोहराने के लिए, यह भी एक्सेल 2010

अगर मैं चयनित सेल के साथ मैक्रो चलाने में सक्षम हूँ, विजुअल बेसिक संपादक, सेल परिवर्तन में मूल्य के भीतर भागो विकल्प का उपयोग नए सूत्र को प्रतिबिंबित करने के लिए, लेकिन फॉर्मूला बार में सूत्र को अद्यतन के रूप में नहीं दिखाता है। लेकिन यह अद्यतन किया जाना चाहिए क्योंकि परिणाम बदल गया। यदि मैं सेल से बाहर और पीछे क्लिक करता हूं, तो अपडेट किया गया सूत्र दिखाई देता है और दिखाता है कि खोज/प्रतिस्थापन काम करता है।

यदि मैं वीबीए विंडो में मैक्रो से कदम उठाता हूं, तो सूत्र बार मैक्रो चलाते समय अद्यतन के रूप में दिखाता है।

यदि मैक्रोज़ -> व्यू -> रन का उपयोग करके एक्सेल विंडो से मैक्रो चलाता हूं, तो सूत्र बार मैक्रो चलाते समय अद्यतन के रूप में दिखाता है।

यदि मैक्रो की अंतिम पंक्ति में r.Select जोड़ता हूं, तो इसे वीबीए कार्यों से चला रहा है।

यदि मै मैक्रो चलाता हूं तो यह फॉर्मूला बार को अपडेट नहीं करता है, फिर फॉर्मूला बार में क्लिक करें, फॉर्मूला बार पुराना फॉर्मूला दिखाता है लेकिन सेल सामग्री उत्तर के बजाए नया फॉर्मूला दिखाने के लिए बदलती है।

संपादित करें: व्यवहार Excel में ही प्रकट होता है 2013

+0

+ 1 इसे जांचने के लिए धन्यवाद :) –

+0

कोई proglem नहीं। रास्ते में एक्सेल 2013 में एक ही व्यवहार की तरह दिखता है। – TessellatingHeckler

4

कई विकल्प उदाहरण

  1. के लिए अन्य उत्तर में सुझाव दिया गया है जबकि कोड
  2. सहेजें कार्यपुस्तिका के माध्यम से अन्य कक्ष का चयन करें

यदि मैं सेल का चयन नहीं करना चाहता हूं या कार्यपुस्तिका को सहेजना नहीं चाहता तो क्या एक वैकल्पिक तरीका है जो उपर्युक्त दो से बेहतर है? हाँ वहाँ है। बस इस की कोशिश की और यह

Sub Sample() 
    Dim r As Range, sPre As String, sAft As String 
    Dim ws As Worksheet 

    Set ws = ThisWorkbook.Sheets("Sheet1") 

    sPre = "$B$2": sAft = "$C$3" 

    On Error Resume Next 
    Set r = ws.Range("A1:A3").SpecialCells(xlCellTypeFormulas) 
    On Error GoTo 0 

    If Not r Is Nothing Then r.Replace what:=sPre, _ 
             replacement:=sAft, _ 
             lookat:=xlPart, _ 
             MatchCase:=False 

    r.Formula = r.Formula 
End Sub 

काम करता है लेकिन सवाल अभी भी बना हुआ है कि Formula Bar मूल परिदृश्य में अद्यतन किया जाना चाहिए था, लेकिन यह

+0

आप सही हैं। यह एक विकल्प है लेकिन वास्तव में इसे पहले स्थान पर अपडेट किया जाना चाहिए था। –

संबंधित मुद्दे

 संबंधित मुद्दे