2012-05-30 15 views
22

मैं अगर यह संभव है पता नहीं है, लेकिन मैं अगर Excel में एक सीमा में खाली है जाँच करना चाहते हैं। तो मैं कैसे लिखूं यदि:एक्सेल दृश्य मूल - का पता लगाने अगर रेंज खाली

Range("A38":"P38") 

वीबीए कोड में खाली है?

अग्रिम धन्यवाद।

+0

एपीआई से परामर्श करें (यह पिया है, लेकिन COM जो VBA में प्रयोग किया जाता है जैसा होना चाहिए) से है कि मूल्य घटाना: http://msdn.microsoft.com /en-us/library/microsoft.office.interop.excel.range_members.aspx (गणना संपत्ति, शायद) –

+0

मैं बहुत VBA के लिए नया हूँ तो यह मेरे लिए भावना का एक बहुत नहीं बनाते हैं :) – Kano

+0

'रेंज ("A38: P38")। Count', http://msdn.microsoft.com/en-us/library/aa139976%28v=office.10%29.aspx –

उत्तर

38

मिले टिप्पणियां मुझे मिल से एक समाधान।

Sub Empty() 
    If WorksheetFunction.CountA(Range("A38:P38")) = 0 Then 
     MsgBox "Empty" 
    Else 
     MsgBox "Not Empty" 
    End If 
End Sub 
+0

ध्यान दें देखें: ** "खाली()" ** वैध प्रक्रिया नाम नहीं है। @ डारन-बार्ट्रप-कुक, मेरा प्रस्तावित संपादन पोस्ट के मूल उद्देश्य से विचलित नहीं होता है और इसके लक्ष्यों को सुरक्षित रखता है। जवाब के लिए –

3
Dim M As Range 

    Set M = Selection 

If application.CountIf(M, "<>0") < 2 Then 
    MsgBox "Nothing selected, please select first BOM or Next BOM" 
Else 

'Your code here 

End If 

अनुभव मैं सिर्फ तुम कर सकते हो सीखा से:

If Selection.Rows.Count < 2 
Then End If` 

स्पष्टीकरण थोड़ी देर बाद उपलब्ध कराई जाने वाली (अभी मैं काम कर रहा हूँ)

+1

धन्यवाद, आप भी स्पष्टीकरण क्या तुलना वास्तव में भावी आगंतुकों के लिए क्या कर रही है का एक सा प्रदान कर सकता है? संपादित करें: यह समझने में थोड़ा मुश्किल है कि आपका संपादन मूल उदाहरण के साथ कैसे फिट बैठता है। – Thor

+0

@Thor जब आप Google पर समस्या का समाधान खोजते हैं, तो आपको यह पृष्ठ मिलता है। लेकिन यह पृष्ठ उस समस्या का उत्तर नहीं देता है इसलिए मैंने उस समस्या का उत्तर दिया। मेरा मानना ​​है कि यहां लोग सिर्फ चीजों को अप-वोट नहीं करते हैं। मैं देख सकता हूं कि इससे पहले ही कुछ लोगों की मदद मिली है। – DeerSpotter

+2

क्या आप अभी भी काम कर रहे हैं? –

3

IsEmpty अगर यह सच है रिटर्न परिवर्तनीय अनियमित है, या स्पष्ट रूप से खाली करने के लिए सेट है; अन्यथा, यह झूठा रिटर्न देता है। यदि अभिव्यक्ति में एक से अधिक चर शामिल हैं तो झूठी हमेशा वापस आती है। IsEmpty केवल वेरिएंट के लिए सार्थक जानकारी देता है। (https://msdn.microsoft.com/en-us/library/office/gg264227.aspx)। तो तुम अलग रेंज में हर कोशिका की जांच करना चाहिए:

Dim thisColumn as Byte, thisRow as Byte 

    For thisColumn = 1 To 5 
     For ThisRow = 1 To 6 
      If IsEmpty(Cells(thisRow, thisColumn)) = False Then 
       GoTo RangeIsNotEmpty 
      End If 
     Next thisRow 
    Next thisColumn 
    ........... 
    RangeIsNotEmpty: 
बेशक

यहाँ COUNTA समारोह के साथ समाधान की तुलना में अधिक कोड है जो रिक्त कक्षों नहीं गिनती हैं, लेकिन गोटो छोरों अंतरायन सकता है अगर कम से कम एक नहीं खाली कक्ष पाया जाता है और अपने कोड को तेज़ी से करें यदि विशेष रूप से सीमा बड़ी है और आपको इस मामले का पता लगाने की आवश्यकता है। यह भी मेरे लिए यह कोड समझना आसान है कि यह क्या कर रहा है, Excel CountA फ़ंक्शन के साथ जो VBA फ़ंक्शन नहीं है।

+1

एक्सेल मैक्रो कोड (यदि संकलन संभव है तो पता नहीं) कुछ समय लगता है जब आपके पास बड़ी संख्या में पुनरावृत्ति होती है। यदि आप पहले से ही निर्धारित कर चुके हैं कि सीमा में कुछ सेल खाली नहीं है और आप इसे संसाधित करना चाहते हैं, लेकिन यह निर्धारित करने की जांच है कि कोई सीमा खाली है या नहीं, यानी यदि आपका कोड भी आवश्यक है) तो तेज़ होना चाहिए और शायद स्वीकृत उत्तर (काउंटरए) का उपयोग करके बहुत तेज।एक वीबी लूप के लिए एक "मूल" फ़ंक्शन का उपयोग करना जो वही करता है जो तेजी से चलने वाले समय तक पहुंचता है। –

+0

यह हमेशा काम नहीं करता है। उदाहरण के लिए यदि आपके पास एक श्रेणी है जो चयन के बाद निरंतर चयन नहीं है (मान लें कि आपकी श्रेणी चयन 1 सेल छोड़ देता है तो यह 5 कोशिकाओं को छोड़ देता है, 1 सेल पर वापस जाता है, आदि) तो यह त्रुटि हो जाएगी। – DeerSpotter

0

एक अन्य संभावित समाधान। रिक्त कक्षों की गणना करें और कोशिकाओं की कुल संख्या

Sub Emptys() 

Dim r As range 
Dim totalCells As Integer 

'My range To check' 
Set r = ActiveSheet.range("A1:B5") 

'Check for filled cells' 
totalCells = r.Count- WorksheetFunction.CountBlank(r) 


If totalCells = 0 Then 
    MsgBox "Range is empty" 
Else 
    MsgBox "Range is not empty" 
End If 

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