का उपयोग कर एक्सेल फ़ाइल की सभी चादरों में स्ट्रिंग की खोज करें मैंने एक मैक्रो लिखा है जो एक्सेल फ़ाइल की सभी चादरों में एक स्ट्रिंग खोजेगा। यह मैक्रो शीट में पहली शीट के साथ-साथ सेल को सक्रिय स्ट्रिंग भी सक्रिय करेगा। यदि नहीं मिला तो यह एक संदेश दिखाएगा। यह मैक्रो ठीक चलाता है। मैं इस कार्यक्षमता को सभी चादरों को कवर करने के लिए विस्तारित करना चाहता था जिसमें यह स्ट्रिंग शामिल है और पहले नहीं। तो मैंने मैक्रो को संशोधित किया लेकिन यह उम्मीद के अनुसार काम नहीं कर रहा है। मैंने नीचे दिया गया कोड दिया है और उस स्थान पर भी टिप्पणी की है जहां यह त्रुटि दिखा रहा है।मैक्रोज़
Dim sheetCount As Integer Dim datatoFind Sub Button1_Click() Find_Data End Sub Private Sub Find_Data() Dim counter As Integer Dim currentSheet As Integer Dim notFound As Boolean Dim yesNo As String notFound = True On Error Resume Next currentSheet = ActiveSheet.Index datatoFind = InputBox("Please enter the value to search for") If datatoFind = "" Then Exit Sub sheetCount = ActiveWorkbook.Sheets.Count If IsError(CDbl(datatoFind)) = False Then datatoFind = CDbl(datatoFind) For counter = 1 To sheetCount Sheets(counter).Activate Cells.Find(What:=datatoFind, After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Activate If InStr(1, ActiveCell.Value, datatoFind) Then If HasMoreValues(counter + 1) Then 'Not completing the method and directly entering yesNo = MsgBox("Do you want to continue search?", vbYesNo) If yesNo = vbNo Then notFound = False Exit For End If End If Sheets(counter).Activate End If Next counter If notFound Then MsgBox ("Value not found") Sheets(currentSheet).Activate End If End Sub Private Function HasMoreValues(ByVal sheetCounter As Integer) As Boolean HasMoreValues = False Dim str As String For counter = sheetCounter To sheetCount Sheets(counter).Activate str = Cells.Find(What:=datatoFind, After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Value 'Not going further than this i.e. following code is not executed If InStr(1, str, datatoFind) Then HasMoreValues = True Exit For End If Next counter End Function
क्षमा करें, लेकिन अपने कोड में कुछ विसंगतियां है और मैं यह नहीं समझ सकता कि आप क्या करने की कोशिश कर रहे हैं। कृपया वर्णन करें कि शीट में एकाधिक मिलान होने पर आपका प्रोग्राम क्या करना चाहिए। और बीटीडब्ल्यू, FindNext विधि –
पर एक नज़र डालें मेरा कोड निम्न कार्य करता है: 1. सभी चादरों में पहले उपलब्ध मिलान की खोज करता है। यदि पाया जाता है तो यह शीट और सेल सक्रिय करता है जिसमें खोज स्ट्रिंग मौजूद होती है। 2. अगले उपलब्ध मैच के लिए खोज। यदि मौजूद है तो हाँ/नहीं कहकर एक संदेशबॉक्स दिखाता है कि अधिक खोज उपलब्ध हैं। क्या आप जारी रखना चाहते हैं? यदि हां, तो अगला उपलब्ध मैच बिंदु 1 में उल्लिखित दिखाया गया है और फिर अगले उपलब्ध मैच की खोज करता है और तब तक सभी मैच समाप्त हो जाते हैं। 3. यदि कोई मिलान उपलब्ध नहीं है तो प्रक्रिया बंद हो जाती है। इसके अलावा यह FindNext, "सेल" या "शीट्स" किसकी विधि है? – samar
क्षमा करें क्या मुझे कुछ याद आ रहा है ... नियंत्रण + एफ के साथ क्या गलत है? (ढूंढें?) डिफ़ॉल्ट खोज केवल सक्रिय शीट है, लेकिन ढूँढें संवाद पर विकल्प में आप कार्यपुस्तिका में खोज क्षेत्र बदल सकते हैं। मुझे यकीन है कि कार्यक्रम में अंतर्निहित फ़ंक्शन को कॉल करने और स्वयं को अनावश्यक काम सहेजने का एक तरीका होगा। – RichardW1001