मैंने एक यूडीएफ बनाया है जो एक ही चादर पर काम करता है। समस्या एकाधिक चादरों के साथ होती है। यदि मेरे पास एकाधिक चादरों पर सूत्र है, और यदि मैं इसे एक शीट पर लोड करता हूं, तो यह अन्य सभी चादरों में भी आउटपुट बदलता है।वीबीए यूडीएफ सभी चादरों पर मूल्य बदलता है। एक को कैसे सीमित करें?
ऐसा क्यों होता है? मैं ActiveWorksheet या सक्रिय सेल या इसी तरह का उपयोग नहीं कर रहा हूं।
Function customreturn(security As Range, datacheck As Range) As Variant
Dim row_num As Integer
Dim row_num2 As Integer
Dim price1 As Double
Dim price2 As Double
Dim perfo As Double
Dim blank_end As Boolean
row_num = security.Row
col_num = security.Column
row_num2 = row_num + 1
col_num2 = datacheck.Column
If WorksheetFunction.IsError(datacheck.Value) = True Then
customreturn = "No data"
Else
price1 = Cells(row_num, col_num).Value
Do While WorksheetFunction.IsError(Cells(row_num2, col_num2).Value) = True
row_num2 = row_num2 + 1
Loop
price2 = Cells(row_num2, col_num).Value
perfo = price1/price2 - 1
customreturn = perfo
End If
End Function
यह सूत्र को पुनः लोड करता है, जिसका अर्थ है कि यह पुन: गणना करता है? या सूत्र के शीट पर डेटा का उपयोग करने के बजाय, यह सभी चादरों में समान जानकारी का पुनर्मूल्यांकन करता है, और उसी जानकारी का उपयोग करता है? (...क्या इसका कोई मतलब है?)। इसके साथ [अस्थिरता] (http://www.mrexcel.com/forum/excel-questions/271165-udf-volatile-vs-not.html) – BruceWayne
1) यदि मैं एक शीट में सूत्र लोड करता हूं मैन्युअल रूप से 2) यह सभी अन्य चादरों में समान मान का उपयोग करता है - हाँ – sandboxj
इसके अलावा, वर्कशीट वैरिएबल ('वर्कशीट के रूप में मंद डब्ल्यूएस', 'सेट ws = शीट्स (security.parent.name)' जोड़ने का प्रयास करें, फिर बस 'ws' जोड़ें 'सेल()' के सभी उपयोगों से पहले। यह सुनिश्चित करेगा कि शीट 'सुरक्षा' से डेटा आ रहा है। – BruceWayne