2016-03-01 10 views
5

से सूत्र डालने मैं सही ढंग से समझ, कि अगर मैंविभिन्न भाषाओं मुद्दा जब VBA

Set myRange.formula = “=ROW(mySheet!R12)” 

की तरह एक आदेश का उपयोग मेरी मैक्रो अगर यह रूस एक्सेल पर चलाया जाता है, कहते हैं, #NAME? त्रुटि कोशिकाओं में दिखाई देते हैं कारण होगा है। मेरा मतलब है कि इस मामले में उपरोक्त सूत्र की तरह

Set myRange.formula = “=СТРОКА(mySheet!R12)” 

हार्ड-कोडेड किया जाना चाहिए जहां СТРОКА योग फ़ंक्शन के रूसी एनालॉग है। मैं एक्सेल को रन-टाइम में सूत्रों का अनुवाद करने के लिए पर्याप्त स्मार्ट होने की उम्मीद नहीं करता। तो क्या इसके आसपास कोई रास्ता है और, सबसे महत्वपूर्ण बात यह है कि मैक्रो काम को लापरवाही के बावजूद सही तरीके से काम करने के लिए सबसे सामान्य कोड क्या है?

उत्तर

10

वीबीए बहुत एन-यूएस केंद्रित है। वीबीए के .Formula और .FormulaR1C1ROW function की अपेक्षा करते हैं। СТРОКА जैसे क्षेत्रीय भाषा फ़ंक्शन 'स्वाद' का उपयोग करने के लिए Range.FormulaLocal property या Range.FormulaR1C1Local property को इसके बजाय नियोजित किया जाना चाहिए।

सूची विभाजक वर्णों के लिए भी यही सच है। सिस्टम क्षेत्रीय सेटिंग्स के बावजूद फ़ॉर्मुला या .FormulaR1C1 का उपयोग करते समय फ़ंक्शन में तर्कों को अलग करने के लिए अल्पविराम (उदा। ,) का उपयोग करें। यदि आपकी प्रणाली अर्ध-कॉलन (उदा। ;) सूची विभाजक चरित्र के रूप में उपयोग करती है, तो इसका उपयोग केवल फर्मुलालोकल या .FormulaR1C1Local के साथ किया जाना चाहिए।

वर्कशीट पर परिणाम Office स्थापना की भाषा सेटिंग्स को सही ढंग से प्रतिबिंबित करेगा।

myRange.Formula = "=ROW(mySheet!$12:$12)" 
myRange.FormulaR1C1 = "=ROW(mySheet!R12)" 
myRange.FormulaLocal = "=СТРОКА(mySheet!$12:$12)" 
myRange.FormulaR1C1Local= "=СТРОКА(mySheet!R12)" 
+0

तो, क्या मैं आपको सही ढंग से समझता हूं, इसका उपयोग करके। फार्मूलालोकल मेरा कोड बिल्कुल व्यवहार्य बना देगा और लापरवाही प्रणाली पर निर्भर नहीं होगा? –

+0

फिर हमें विधि की आवश्यकता क्यों है। फार्मूला जो भी हो?)) और वे विधि में फ़ॉर्मुलालोकल की funcionality को एकीकृत क्यों नहीं करते हैं। फार्मूला?)) अजीब पर्याप्त –

+0

हां, यह चाहिए। यह आवश्यक है कि आप यह सुनिश्चित कर लें कि आप या तो [.FormulaLocal] (https://msdn.microsoft.com/en-us/library/office/ff838851.aspx) या [.FormulaR1C1Local] (https://msdn.microsoft.com/en-us/library/office/ff838568.aspx) उचित रूप से। आपके नमूने में 'आर 12' संदर्भ थोड़ा अस्पष्ट था; मुझे उम्मीद है कि मैंने सही ढंग से अनुमान लगाया है। साथ ही, फॉर्मूला के भीतर किसी भी उद्धरण को दोगुना करने की आवश्यकता है क्योंकि वे उद्धृत स्ट्रिंग के भीतर होंगे। जैसे '=" abc "' बन जाता है। .FormulaLocal = "=" "abc" "" '। – Jeeped