2014-04-09 8 views
7

का उपयोग कर सेल में डेटा सत्यापन जोड़ने के लिए कैसे मैं वीबीए का उपयोग कर सेल (जो परिवर्तनीय है) में "डेटा सत्यापन" जोड़ना चाहता हूं और डेटा सत्यापन सूची में आने वाली सीमा भी परिवर्तनीय है। अब तक मैं सेल जहाँ मैं डेटा सत्यापन चाहतेवीबीए

Dim range1, rng As range 
Set range1 = range("a1:a5") 
Set rng = range("b1") 
With rng 
With .Validation 
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
    xlBetween, Formula1:="range1" 
End With 
End With 

मैं हो रही है, वह सीमा जो डेटा सत्यापन सूची में "RNG" आने के लिए और है इस

यहाँ "सीमा 1" का उपयोग किया गया है "आवेदन परिभाषित और वस्तु परिभाषित त्रुटि"

इसके अलावा किसी को इस एक

With .Validation 
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
    xlBetween, Formula1:="range1" 

उत्तर

16

उपयोग में विभिन्न तर्क का अर्थ मुझे व्याख्या कर सकते हैं:

Dim ws As Worksheet 
Dim range1 As Range, rng As Range 
'change Sheet1 to suit 
Set ws = ThisWorkbook.Worksheets("Sheet1") 

Set range1 = ws.Range("A1:A5") 
Set rng = ws.Range("B1") 

With rng.Validation 
    .Delete 'delete previous validation 
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ 
     Formula1:="='" & ws.Name & "'!" & range1.Address 
End With 

नोट है कि जब आप Dim range1, rng As range उपयोग कर रहे हैं, केवल rngRange के प्रकार है, लेकिन range1Variant है। यही कारण है कि मैं Dim range1 As Range, rng As Range का उपयोग कर रहा हूं।
मापदंडों का अर्थ आप पढ़ सकते हैं के बारे में MSDN है, लेकिन संक्षेप में:

  • Type:=xlValidateList सत्यापन प्रकार का मतलब है, उस मामले में आप सूची से मूल्य का चयन करना चाहिए
  • AlertStyle:=xlValidAlertStop संदेश बॉक्स में इस्तेमाल आइकन सत्यापन के दौरान प्रदर्शित निर्दिष्ट करता है । यदि उपयोगकर्ता सूची से बाहर किसी भी मूल्य में प्रवेश करता है, तो उसे त्रुटि संदेश मिलेगा।
  • अपने मूल कोड में, Operator:= xlBetween विचित्र है। इसका उपयोग केवल तभी किया जा सकता है जब सत्यापन के लिए दो सूत्र प्रदान किए जाते हैं।
  • सूची डेटा सत्यापन के लिए Formula1:="='" & ws.Name & "'!" & range1.Address मूल्यों (प्रारूप =Sheet!A1:A5 में)
+0

परिवर्तन अरे मैंने किया था और उसके सिर्फ ठीक काम कर रहा, मदद के लिए
अरे आप
कृपया उसका वर्णन धन्यवाद 'के साथ सूची का पता प्रदान करता है '
फिर से थोड़ी सी विस्तार से, मैं बस "=" "और" =! "क्या नहीं है , मैं वीबीए के लिए नया हूं, कृपया ध्यान न दें या यदि आपके पास कोई लिंक है जहां मैं इसे विस्तार से पढ़ सकता हूं तो वह बहुत ही बढ़िया होगा। – Gajju

+3

@ गजजू, कोई चिंता नहीं, यह आसान है :) शुरू करते हैं! वांछित परिणाम इस तरह कुछ है: 'फॉर्मूला 1: = "=' शीट 1 '! ए 1: ए 5" '- एक्सेल में सभी सूत्र बराबर चिह्न से शुरू होते हैं:' = '। अगला, 'शीट 1'! का मतलब है कि 'ए 1: ए 5' शीट 'शीट 1' से संबंधित है (यदि आपकी शीट का नाम _doesn't_ में रिक्त स्थान नहीं हैं, तो आप इस तरह 'sigh' को छोड़ सकते हैं: फॉर्मूला 1: = "= शीट 1! ए 1: ए 5 "। लेकिन हम इस फॉर्मूला को हार्डकोड नहीं करना चाहते हैं, इसलिए हम इसका उपयोग करते हैं: 'फॉर्मूला 1: =" =' "और ws.Name और" '! "और रेंज 1। एड्रेस' जहां 'ws.Name' रिटर्न शीट नाम (उदाहरण के लिए "शीट 1") और 'श्रेणी 1। एड्रेस' रिटर्न 'ए 1: ए 5'। –

+0

अरे, यह समझना आसान था, समय के लिए धन्यवाद और मदद के लिए धन्यवाद ... – Gajju