JS20'07'11 का कोड वास्तव में अविश्वसनीय सरल और सीधा है। एक सुझाव यह है कि मैं देने के लिए चाहते हैं की स्थिति में एक विस्मयादिबोधक चिह्न डाल करने के लिए है:
InStr(1, objName.RefersTo, sWsName+"!", vbTextCompare)
क्योंकि यह एक गलत शीट में एक NamedRange जोड़ने नहीं कर पाएगा। उदाहरण: नामांकित रेंजनामक शीट को संदर्भित करता है प्लान 11 और आपके पास प्लान 1 नामक एक और शीट है, तो यदि आप विस्मयादिबोधक चिह्न का उपयोग नहीं करते हैं तो कोड श्रेणी जोड़ते समय कुछ गड़बड़ कर सकते हैं।
अद्यतन
एक सुधार: यह एक नियमित अभिव्यक्ति शीट के नाम से मूल्यांकन का उपयोग करने के लिए सबसे अच्छा है। एक साधारण समारोह है कि आप उपयोग कर सकते हैं वह इस प्रकार है (http://blog.malcolmp.com/2010/regular-expressions-excel-add-in द्वारा रूपांतरित, माइक्रोसॉफ्ट VBScript रेगुलर एक्सप्रेशन 5.5 सक्षम):
Function xMatch(pattern As String, searchText As String, Optional matchIndex As Integer = 1, Optional ignoreCase As Boolean = True) As String
On Error Resume Next
Dim RegEx As New RegExp
RegEx.Global = True
RegEx.MultiLine = True
RegEx.pattern = pattern
RegEx.ignoreCase = ignoreCase
Dim matches As MatchCollection
Set matches = RegEx.Execute(searchText)
Dim i As Integer
i = 1
For Each Match In matches
If i = matchIndex Then
xMatch = Match.Value
End If
i = i + 1
Next
End Function
तो, आप ऐसा ही कुछ का उपयोग कर सकते हैं:
xMatch("'?" +sWsName + "'?" + "!", objName.RefersTo, 1) <> ""
बजाय
InStr(1, objName.RefersTo, sWsName+"!", vbTextCompare)
यह Plan1 और कवर किया जाएगा 'Plan1' (क एन रेंज एक से अधिक सेल को संदर्भित करता है) विविधता
टीआईपी: सिंगल कोट्स ('), :) के साथ शीट नामों से बचें।
यह कोड वर्कशीट पर कार्यपुस्तिका पर सेट की गई सीमाओं के दायरे को बदलता प्रतीत होता है। मैंने सोचा कि यह विपरीत करना था। यानी कार्यपत्रक से कार्यपुस्तिका में दायरा बदलें। –
मूल प्रश्न मुझे स्पष्ट करता है: "उदाहरण के लिए, 'testName' 'शीट 1' को संदर्भित करता है! ए 1: बी 2 कार्यक्षेत्र के साथ बी 2। मैं इसे 'testName' में कैसे बदलूं 'शीट 1' से संदर्भित करता हूं! ए 1: बी 2 'शीट 1' 'गुंजाइश?' –
एडिन के लिए धन्यवाद। ये अच्छी तरह काम करता है। – Anthony