2008-11-02 22 views
7

में एक इनपुट पूर्णांक लिख रहा है, मैं खुद को एक त्वरित एप्लिकेशन लिख रहा हूं - पहली परियोजना, हालांकि मैं एक्सेल में एक नामित सेल में इनपुट स्ट्रिंग के परिणाम लिखने के लिए वीबीए कोड खोजने की कोशिश कर रहा हूं।वीबीए एक्सेल मैक्रो एक सेल

उदाहरण के लिए, एक इनपुट बॉक्स सवाल पूछता है कि "आप किस नौकरी संख्या को सूची में जोड़ना चाहते हैं?" ... उपयोगकर्ता तब संदर्भ संख्या दर्ज करेगा जैसे "FX1234356"। मैक्रो को उस सेल को उस सेल में लिखने की आवश्यकता होती है, जिसका उपयोग मैं मैक्रो को समाप्त करने के लिए कर सकता हूं (मूल रूप से कुछ डेटा में एक खोज)।

+2

प्रश्न शीर्षक भ्रामक है। आपका इनपुट पूर्णांक नहीं है। –

उत्तर

10

आप किसी भी अन्य सेल की तरह नामित सेल के मूल्य को सेट करने के लिए वीबीए में रेंज ऑब्जेक्ट का उपयोग कर सकते हैं।

Range("C1").Value = Inputbox("Which job number would you like to add to the list?) 

जहां "सी 1" उस सेल का नाम है जिसे आप अपडेट करना चाहते हैं।

मेरा एक्सेल वीबीए थोड़ा पुराना और क्रिस्टी है, इसलिए एक्सेल के नए संस्करणों में ऐसा करने का एक बेहतर तरीका हो सकता है।

+0

आपने मुझे बस इसे हराया;) – JimmyJ

+1

मेरे लिए इसे सत्यापित करने के लिए धन्यवाद। मुझे पुराने कोड पोस्ट करने से नफरत है और संभवतः कोई अंदर आकर कहता है "हाँ, 1 9 00 के दशक में आपने इसे इस तरह से किया होगा, लेकिन अब ..."। :) –

0

मैंने इस तरह की चीज को एक फॉर्म के साथ किया है जिसमें टेक्स्टबॉक्स शामिल है।

तो अगर आप इस में रखना चाहते थे कहना सेल H1, तो का उपयोग करें:

ActiveSheet.Range("H1").Value = txtBoxName.Text

4

मेरा सुझाव है हमेशा नामांकित श्रेणी का उपयोग कर (के रूप में आप का सुझाव दिया है आप कर रहे हैं), क्योंकि किसी भी स्तंभों या पंक्तियों अगर जोड़े गए या हटाए गए हैं, नाम संदर्भ अपडेट होगा, जबकि यदि आप वीबीए में सेल संदर्भ (उदाहरण के लिए "एच 1" प्रतिक्रियाओं में से एक में सुझाव दिया गया है) तो यह अद्यतन नहीं होगा और गलत सेल को इंगित करेगा।

तो

Range("RefNo") = InputBox("....") 

सुरक्षित से

Range("H1") = InputBox("....") 

आप कई कोशिकाओं के मूल्य भी निर्धारित कर सकते हैं।

Range("Results").Resize(10,3) = arrResults() 

जहां arrResults कम से कम 10 पंक्तियों & 3 स्तंभ (और किसी भी प्रकार किया जा सकता है) की एक सरणी है। आप इस का उपयोग करते हैं, VBA मॉड्यूल के शीर्ष पर इस

Option Base 1 

शब्दों में कहें, अन्यथा VBA सरणी 0 पर शुरू होता है मान लेते हैं और शीट में एक खाली पहली पंक्ति और स्तंभ डाल देंगे। यह रेखा सभी सरणी को डिफ़ॉल्ट रूप से 1 पर शुरू करती है (जो अधिकांश भाषाओं में असामान्य हो सकती है लेकिन स्प्रेडशीट के साथ अच्छी तरह से काम करती है)।

1

InputBox method का उपयोग कर सेल में डालने के जवाब के लिए उपयोगकर्ता से पूछते समय, आमतौर पर तीन चीजें होती हैं जो हो सकती हैं।

  1. उपयोगकर्ता ठीक पर कुछ प्रकार और क्लिक करता है। यही वह है जो आप होने की उम्मीद करते हैं और आपको इनपुट वापस प्राप्त होगा जिसे सीधे सेल या घोषित चर पर वापस किया जा सकता है।
  2. उपयोगकर्ता क्लिक रद्द, Esc प्रेस या क्लिक करता है × (बंद)।वापसी मूल्य एक बूलियन झूठा है। इसके लिए जिम्मेदार होना चाहिए।
  3. उपयोगकर्ता कुछ भी टाइप नहीं करता है लेकिन क्लिक ठीक परवाह किए बिना। वापसी मान शून्य-लंबाई वाली स्ट्रिंग है।

यदि आप एक सेल में वापसी मूल्य डाल रहे हैं, तो आपकी खुद की लॉजिक स्ट्रीम आपको बाद के दो परिदृश्यों के बारे में क्या करना चाहती है। आप सेल को साफ़ करना चाहते हैं या आप सेल सामग्री को अकेले छोड़ना चाह सकते हैं। यहां एक वेरिएंट टाइप वैरिएबल और Select Case statement के साथ विभिन्न परिणामों को संभालने का तरीका बताया गया है।

Dim returnVal As Variant 

    returnVal = InputBox(Prompt:="Type a value:", Title:="Test Data") 

    'if the user clicked Cancel, Close or Esc the False 
    'is translated to the variant as a vbNullString 
    Select Case True 
     Case Len(returnVal) = 0 
      'no value but user clicked OK - clear the target cell 
      Range("A2").ClearContents 
     Case Else 
      'returned a value with OK, save it 
      Range("A2") = returnVal 
    End Select 

¹ चौथी परिदृश्य जब InputBox method की एक विशिष्ट प्रकार प्रयोग किया जाता है नहीं है। एक इनपुटबॉक्स एक सूत्र, सेल रेंज त्रुटि या सरणी वापस कर सकता है। वे विशेष मामले हैं और बहुत विशिष्ट वाक्यविन्यास विकल्पों का उपयोग करने की आवश्यकता है। अधिक के लिए आपूर्ति लिंक देखें।

संबंधित मुद्दे