2012-04-19 11 views
6

मेरे पास एक्सेल 2010 में एक वीबीए फ़ंक्शन है जिसे मैंने यहां लोगों से सहायता का उपयोग करके बनाया है। यह फ़ंक्शन किसी तालिका/फ़ॉर्म की सामग्री की प्रतिलिपि बनाता है, उन्हें टाइप करता है, और उन्हें उपयुक्त तालिकाओं में भेजता है।तालिका को नष्ट किए बिना स्पष्ट तालिका सामग्री का चयन कैसे करें?

अब इस फ़ंक्शन को चलाने के बाद मैं मूल तालिका को साफ़ करना चाहता हूं। मैं इसे निम्नलिखित कोड के साथ प्राप्त कर सकता हूं, मानते हुए कि एसेल को तालिका में पहले सेल के रूप में परिभाषित किया गया है। ACell.ListObject.Range.ClearContents ठीक काम करता है, केवल समस्या यह है कि यह तालिका के साथ-साथ डेटा मानों को हटा देती है।

क्या इसके आसपास कोई रास्ता है? जब भी मैं कुछ डेटा दर्ज करता हूं तो मुझे तालिका को सेट अप करने की आवश्यकता नहीं होती है।

उत्तर

17

के बारे में कैसे:

ACell.ListObject.DataBodyRange.Rows.Delete 

कि अपनी मेज संरचना और शीर्षकों, लेकिन स्पष्ट सभी डेटा और पंक्तियों रखेंगे।

संपादित करें: मैं your previous post से अपने उत्तर के एक खंड को संशोधित करने जा रहा हूं, क्योंकि यह वही है जो आप चाहते हैं। यह सिर्फ एक पंक्ति छोड़ देता है:

With loSource 
    .Range.AutoFilter 
    .DataBodyRange.Offset(1).Resize(.DataBodyRange.Rows.Count - 1,      .DataBodyRange.Columns.Count).Rows.Delete 
    .DataBodyRange.Rows(1).Specialcells(xlCellTypeConstants).ClearContents 
End With 

आप सभी पंक्तियों उनके फार्मूले और whatnot के साथ बरकरार, बस करना छोड़ करना चाहते हैं:

With loSource 
    .Range.AutoFilter 
    .DataBodyRange.Specialcells(xlCellTypeConstants).ClearContents 
End With 

कौन क्या @Readify सुझाव के करीब है, सिवाय इसके कि इसे जीता सूत्रों को स्पष्ट नहीं करें।

+1

तो अगर मैं सभी पंक्तियों क्या होता हटाना चाहते हैं? क्या यह 1 रिक्त छोड़ देगा या क्या मैंने अभी तक कोई कक्ष नहीं रखा है, मेरे पास इस तालिका पर पाद लेख का कोई शीर्षलेख नहीं है। – SpeedCrazy

+0

बस कोशिश की और यह पूरी तरह से तालिका, सूत्र, डेटा सत्यापन, स्वरूपण, सबकुछ हटा देता है! – SpeedCrazy

+0

ठीक है, एक गहरी सांस लें :)। यदि आप अपने प्रश्न में डेटा सत्यापन और सूत्रों जैसी चीजों का उल्लेख करते हैं तो इससे मदद मिलेगी। इस विषय पर मैंने पिछले प्रश्न का उत्तर एक पंक्ति छोड़ने के लिए कोड शामिल किया था। क्या तुम यही चाहते हो? –

5

सिर्फ डेटा (नहीं हेडर सहित पूरे तालिका) साफ़ करके देखें:

ACell.ListObject.DataBodyRange.ClearContents 
+0

से ऊपर देता है यदि आप तालिका पंक्तियां छोड़ना चाहते हैं और केवल सामग्री साफ़ करना चाहते हैं तो उपर्युक्त का उपयोग करें। यदि आप पंक्तियों को भी हटाना चाहते हैं तो डौग के उत्तर का उपयोग करें। – Reafidy

+0

इसे ताजा आंखों से देखने और उस समय जानकारी पर निकटतम उत्तर देने के लिए +1। –

0

मैं अपने डेटा को निकालने लेकिन शीर्ष पंक्ति में सूत्रों छोड़ने के लिए इस कोड का उपयोग। यह शीर्ष पंक्ति को छोड़कर सभी पंक्तियों को भी हटा देता है और पृष्ठ को ऊपर तक स्क्रॉल करता है।

Sub CleanTheTable() 
    Application.ScreenUpdating = False 
    Sheets("Data").Select 
    ActiveSheet.ListObjects("TestTable").HeaderRowRange.Select 
    'Remove the filters if one exists. 
    If ActiveSheet.FilterMode Then 
    Selection.AutoFilter 
    End If 
    'Clear all lines but the first one in the table leaving formulas for the next go round. 
    With Worksheets("Data").ListObjects("TestTable") 
    .Range.AutoFilter 
    On Error Resume Next 
    .DataBodyRange.Offset(1).Resize(.DataBodyRange.Rows.Count - 1, .DataBodyRange.Columns.Count).Rows.Delete 
    .DataBodyRange.Rows(1).SpecialCells(xlCellTypeConstants).ClearContents 
    ActiveWindow.SmallScroll Down:=-10000 

    End With 
Application.ScreenUpdating = True 
End Sub 
संबंधित मुद्दे