चर

2011-06-06 5 views
23

साथ एक्सेल VBA कॉल सबरूटीन मैं निम्नलिखित सबरूटीन परिभाषित:चर

EnterCellValueMonthNumber ("N23:Q23",1) 

मैं निम्न त्रुटि संदेश मिलता है:

Compile error Expected: = 

Sub EnterCellValueMonthNumber(cells As range, number As Integer) 

range(cells).Select 
ActiveCell.FormulaR1C1 = number 

End Sub 

जब मैं इस तरह सबरूटीन फोन

मुझे नहीं पता कि मुझे यह संदेश क्यों मिलता है। क्या किसी को पता है कि मैं क्या खो रहा हूँ?

उत्तर

40

आप

EnterCellValueMonthNumber "N23:Q23", 1 

कोई कोष्ठक के रूप में उप कहेंगे। या

Call EnterCellValueMonthNumber("N23:Q23", 1) 

ब्रैकेट, और Call इससे पहले।

इसके अलावा, आपकी उप रेंज ऑब्जेक्ट को पहले तर्क के रूप में उम्मीद कर रही है और आप एक स्ट्रिंग की आपूर्ति कर रहे हैं;

Sub EnterCellValueMonthNumber(cells As String, number As Integer) 

इसके अलावा, मैं तुम क्या इस कोड के साथ प्राप्त करने के लिए के रूप में यह केवल 1 के लिए रेंज के ऊपरी-बाएं सेल सेट हो जाएगा कोशिश कर रहे हैं के रूप में अनिश्चित हूँ: आप के लिए उप के हस्ताक्षर बदलना चाहिए।

Range(cells).Value = number 
' Or, if you're going to be passing in something more complex later... 
Range(cells).FormulaR1C1 = number 

कुछ और उचित होगा?

मैं Range("...") का उपयोग करके बहुत सावधान रहूंगा, यह निर्दिष्ट किए बिना कि आप किस शीट का जिक्र कर रहे हैं। यह जो भी सक्रिय शीट पर कार्य करेगा और इस प्रकार अप्रत्याशित समस्याओं का कारण बन सकता है, लगभग हमेशा SheetX.Range("...") पसंद करते हैं। इसी तरह .Select का उपयोग करने के लिए, यह अनावश्यक है, और भविष्य में केवल आपके लिए समस्याएं पैदा कर सकता है।

+1

हाँ यह सही और सही है। धन्यवाद। – user366121

+0

हालांकि मैं एक और सबरूटीन परिभाषित: उप EnterCellValue (कोशिकाओं रेंज के रूप में) रेंज (कोशिकाओं) .Select ActiveCell.FormulaR1C1 = "एम" End Sub और इस तरह यह कहा जाता है: (": Q23 N23") और था EnterCellValue कोई समस्या नहीं। यह परेशान है। – user366121

2

आपके पास वास्तव में 2 समस्याएं हैं।

सबसे पहले आपके प्रश्न का वास्तविक उत्तर। जब से तुम प्रकार range की cells की स्थापना की है, यदि आप इसे चलाने

Call EnterCellValueMonthNumber("N23:Q23",1) 

लेकिन है कि अभी भी अभ्यस्त काम ... इस के बजाय का उपयोग कर प्रकार string के रूप में सेट:: आप कहते हैं की जरूरत है

Sub EnterCellValueMonthNumber(cells As String, number As Integer) 
    Range(cells).Select 
    ActiveCell.FormulaR1C1 = number 
End Sub 
0

कोशिश निम्नलिखित कोड:

Sub EnterCellValueMonthNumber(ByVal cells As String, number As Integer) 

    Range(cells).Select 

    ActiveCell.FormulaR1C1 = number 

End Sub