मेरे पास एक स्प्रेडशीट के भीतर एक वीबीए फ़ंक्शन है जो मेरे मैक्रो के पहले चरण में खोला गया एक और स्प्रेडशीट पर चलता है। मैक्रो ठीक काम करने के लिए प्रयुक्त होता है लेकिन हाल ही में त्रुटि ("वर्कशीट फ़ंक्शन वर्ग") की राउंडडाउन संपत्ति प्राप्त करने में असमर्थ होने पर यह हाल ही में शुरू हो गया है।एक्सेल त्रुटि 1004 "वर्कशीट फंक्शन क्लास की संपत्ति प्राप्त करने में असमर्थ" असंगत रूप से
मुझे विश्वास है कि मैं समझता हूं कि त्रुटि क्या होगी (राउंडडाउन चलाने में समस्या) लेकिन मैं नहीं देख सकता कि यह मेरे मैक्रो में क्यों ट्रिगर हो रहा है और अजीब हिस्सा यह है कि जब मैं डीबग मोड में जाता हूं और कोड के माध्यम से कदम उठाता हूं वीबीई में त्रुटि दोबारा नहीं होती है (कुछ भी स्पष्ट रूप से बदल नहीं होने के बावजूद)।
क्या किसी के पास असंगत रूप से इस तरह की त्रुटि का एक समान अनुभव है और पता है कि मैं इसे हल करने के लिए क्या कर सकता हूं?
मैं उचित रूप से वीबीए/एक्सेल-समझदार हूं, लेकिन इसका निदान करने के लिए आगे के चरणों पर किसी भी सुझाव की सराहना की जाएगी। मैं सोच रहा हूं कि खुली स्प्रेडशीट के साथ कुछ मुद्दा तैयार नहीं है, लेकिन मैं नहीं देख सकता कि कैसे।
कोड यहाँ है। एक टिप्पणी के साथ चिह्नित लाइन पर त्रुटि होती है।
Public Function GetDatesA(sWorkbookname As String, sSheetname As String, sCell As String) As Variant
Dim vDateList() As Variant
Dim currentCell As Range
Dim n As Long
Set currentCell = Workbooks(sWorkbookname).Worksheets(sSheetname).Range(sCell)
n = 0
Do
If Trim(currentCell.Value) = "" Then
Exit Do
Else
ReDim Preserve vDateList(0 To 1, 0 To n)
vDateList(0, n) = WorksheetFunction.RoundDown(currentCell.Value, 0) 'error occcurs on this line
vDateList(1, n) = currentCell.Column
'Debug.Print currentCell.Value
End If
Set currentCell = currentCell.Offset(0, 1)
n = n + 1
Loop While currentCell.Column < XL_LAST_COLUMN
GetDatesA = vDateList
End Function
अन्य विवरण हैं:
एक्सेल संस्करण: 2010
फ़ाइल मेरी सी पर स्थानीय रूप से बसता था खोला जा रहा: ड्राइव; मेरी मैक्रो नेटवर्क पर एक स्प्रेडशीट में है
दोनों फ़ाइलों के लिए फ़ाइल फ़ॉर्मेट .xls है (यानी Excel 2003) - मैं इस
विंडोज 7 बदलने का विकल्प नहीं है (नहीं मुझे लगता है कि यह प्रासंगिक होगा)
दो अंक मैं पहले से ही की कोशिश की है इस प्रकार हैं:
स्थानापन्न किसी दूसरे कार्यपत्रक समारोह (जैसे मिन (currentCell)) और वें यह भी एक ही समस्या का कारण बनता है
फ़ाइल खोलने से पहले ही समस्या को रोकना प्रतीत होता है - मुझे आश्चर्य है कि अगर कोई कार्यपुस्तिका खोला जा रहा है (इसके मैक्रो के साथ मेरी मुख्य कार्यपुस्तिका के बजाय) मैक्रोज़ के लिए सक्षम है और यह हस्तक्षेप कर रहा है। लेकिन अगर यह कारण भी है तो मुझे यकीन नहीं है कि इसके आसपास कैसे जाना है!
कोई विचार?
काम करेंगे आप 'सिर्फ' पहले vDateList (0, एन) = WorksheetFunction.RoundDown (currentCell.Value, 0) ', क्या करना सम्मिलित Debug.Print currentCell.Value' आपको मिला? क्या यह वैध संख्या है? –
'वर्कशीटफंक्शन। राउंडडाउन (currentCell.Value, 0)' को 'एप्लिकेशन' में बदलें। वर्कशीटफंक्शन। राउंडडाउन (currentCell.Value, 0) ' –
धन्यवाद! मैंने उसे जाने दिया। मुझे तिथियों की एक सूची मिलती है (प्रभावी रूप से संख्याएं - जब तक कि मैं दिनांक के अनुरूप अंतर्निहित एक्सेल नंबर प्राप्त करने के लिए 1 तक गुणा नहीं करता) तक एक तिथि के रूप में दिखाता हूं। यदि मैं कोड के माध्यम से कदम उठाता हूं तो ये निश्चित रूप से ठीक से चलते हैं, लेकिन अगर मैं इसे अपने आप चलाने के लिए नहीं देता (जब यह सटीक समान मान वापस खींचता है), तो शायद यह मेरे खराब डेटा की बजाय वर्कशीट फ़ंक्शन के बारे में कुछ है। अब मैं "ऑन त्रुटि ..." का उपयोग करने पर काम कर रहा हूं - ऐसा लगता है कि पहली बार त्रुटि हुई है, इसलिए पहले से ही ऑन रेज़्यूमे के साथ एक मनमानी वर्कशीट फ़ंक्शन कॉल करना होगा और उसके बाद यह बंद हो जाएगा। – Neil