2012-12-04 19 views
5

का उपयोग कर सेल के सूत्र को टेक्स्ट में कनवर्ट करना मैं वर्कबुक में सूत्रों के साथ सभी कक्षों को ढूंढने और एक अलग शीट पर दो कॉलम में अपना पता और फॉर्मूला आउटपुट करने के लिए Excel2003 में एक मैक्रो लिख रहा हूं।एक्सेल vba

मैं जानता हूँ कि मैं किसी एक सेल

Public Function ShowFormula(cell As Range) As String 

    ShowFormula = cell.Formula 

End Function 

जो सिर्फ ठीक काम करता है का उपयोग कर के लिए सूत्र दिखा सकते हैं, लेकिन जब से मैं हाथ से सभी कोशिकाओं खोजने के लिए नहीं करना चाहता था, मैं निम्नलिखित मैक्रो लिखा था उन सब को यह सभी कोशिकाओं ठीक, लेकिन इसके बजाय पाठ के रूप में सूत्र प्रदर्शित करने में पाता है मुझे

Sub Macro2() 


Dim i As Integer 
Dim targetCells As Range 
Dim cell As Range 
Dim referenceRange As Range 
Dim thisSheet As Worksheet 

Set referenceRange = ActiveSheet.Range("CA1") 

With referenceRange 
    For Each thisSheet In ThisWorkbook.Sheets 
     If thisSheet.Index >= referenceRange.Parent.Index Then 
      Set targetCells = thisSheet.Cells.SpecialCells(xlCellTypeFormulas, 23) 
      For Each cell In targetCells 
       If cell.HasFormula Then 
        .Offset(i, 0).Value = thisSheet.Name 
        .Offset(i, 1).Value = cell.Address 
        .Offset(i, 2).Value = CStr(cell.Formula) 
        i = i + 1 
       End If 
      Next 
     End If 
    Next 
End With 

End Sub 

के लिए लगता है, सूची सूत्र परिणाम प्रदर्शित करता है।

फॉर्मूला के बजाय फॉर्मूला को आउटपुट करने के लिए मुझे क्या याद आ रही है?

उत्तर

5

इस प्रयास करें:

.Offset(i, 2).Value = "'" & CStr(cell.Formula) 

इसके अलावा, इस चीज़ें थोड़ी तेज कर देगा।

For Each thisSheet In ThisWorkbook.Sheets 
    If thisSheet.Index >= referenceRange.Parent.Index Then 

के बजाय कोशिश

For j = referenceRange.Parent.Index to Sheets.Count 
    Set thisSheet = Sheets(j) 
+0

टिप के लिए धन्यवाद चीजों को तेज करने के लिए! आपके उत्तर पर त्वरित सवाल। हालांकि यह काम करता है, यह '= ए 1 + बी 2 + सी 3 + ...' आउटपुट करता है। मैं उन सूत्रों को बाद में विभिन्न कोशिकाओं में प्लग करने की योजना बना रहा हूं और इसके लिए "" को हटाने की आवश्यकता होगी। क्या पाठ प्रारूप को मजबूर किए बिना ऐसा करने का कोई तरीका है? मुझे सच में आश्चर्य है कि यह यूडीएफ के साथ क्यों काम करता है और मैक्रो के भीतर नहीं ...? –

+0

"" को छोटा करना 'छोटा है' दाएं (एस, लेन) - 1) 'लेकिन मैं आपका मुद्दा लेता हूं। आप अनमोडिफाइड फॉर्मूला चिपकाने से पहले गंतव्य सेल के प्रारूप को पाठ में सेट करने का प्रयास कर सकते हैं और देख सकते हैं कि यह कैसे जाता है। –

+0

पाठ को स्वरूपण ने उस चाल को किया था। इतना आसान, फिर भी यह मेरे लिए नहीं हुआ :(बहुत धन्यवाद! –

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