मेरे पास है/मेरे एक्सेल डाटा शीट में प्रत्येक डेटा पंक्ति के लिए एक विशिष्ट आईडी परिभाषित करना चाहते हैं के माध्यम से Excel में सेल के लिए विशिष्ट आईडी सेट - जैसे कि मैं जब डेटा सिर्फ गुजर इसका इस्तेमाल कर सकते हैं और यह रहता है वही जब पंक्तियों को इसके ऊपर जोड़ा/हटा दिया जाता है।कैसे प्राप्त करने के लिए/VBA
मेरे विचार रेंज के आईडी विशेषता (msdn link)
तो उपयोग करने के लिए कर रहे हैं, मैं एक उपयोगकर्ता परिभाषित समारोह (UDF) जो मैं प्रत्येक पंक्ति है कि हो जाता है में जगह है/आईडी के रूप में इस सेट:
Dim gNextUniqueId As Integer
Public Function rbGetId(ticker As String)
On Error GoTo rbGetId_Error
Dim currCell As Range
'tried using Application.Caller direct, but gives same error
Set currCell = Range(Application.Caller.Address)
If currCell.id = "" Then
gNextUniqueId = gNextUniqueId + 1
'this line fails no matter what value I set it to.
currCell.id = Str(gNextUniqueId)
End If
rbGetId = ticker & currCell.id
Exit Function
rbGetId_Error:
rbGetId = "!ERROR:" & Err.Description
End Function
लेकिन इस लाइन
साथ उल्लेख पर विफल रहता है"आवेदन से परिभाषित या वस्तु से परिभाषित त्रुटि"
मैं शायद सोचा था कि अपने UDFs के उन सीमाओं में से एक है, लेकिन अगर मैं एक रिबन बटन से चालू होने वाले कोड से यह कोशिश मैं भी यही त्रुटि मिलती है ...
कैसे संगत आईडी रखने के लिए पर कोई अन्य सुझाव- शायद मुझे अपने रिबन बटन के माध्यम से कोशिकाओं को पॉप्युलेट करना चाहिए, आईडी के बिना सेल ढूंढना और उनमें से सेल मूल्य उत्पन्न करना/सेट करना ...
संपादित करें: जैसा कि एंटी सोचा था, मेरे पास शीट संरक्षित है, लेकिन यहां तक कि एक अनलॉक सेल में भी अभी भी विफल रहता है। शीट को असुरक्षित करना समस्या को हल करता है .... लेकिन मैंने "UserInterFaceOnly: = True" को सुरक्षित किया है, जो मुझे ऐसा करने की अनुमति देनी चाहिए। मैं मैन्युअल रूप से "संपादित वस्तुओं" की अनुमति देते हैं जब मैं चादर यह भी काम करता है की रक्षा, लेकिन मुझे लगता है कि के लिए एक कार्यक्रम संबंधी विकल्प दिखाई नहीं देता - और मैं UserInterfaceOnly सुविधा को सक्षम करने AutoOpen में सुरक्षित फ़ंक्शन को कॉल करने की जरूरत है ...
मुझे लगता है मैं बंद करने की आवश्यकता/पर अपने आईडी सेटिंग के आसपास की रक्षा - न ActiveSheet.unprotect है और न ही ActiveWorkbook.unprotect :(
- कि एक यूडीएफ में किया जा सकता है ... जो ऐसा लगता है यह नहीं कर सकते हैं, के रूप में वह काम नहीं करता यह सोचते हैंअग्रिम धन्यवाद क्रिस
आपका कोड Excel 2003 और 2007 दोनों में ठीक काम करता है। आपकी पुस्तक लॉक नहीं है या ऐसा कुछ है? – Ant