एक्सेल - Vba डालने की पंक्ति और रेंज सदस्यता रखें

मुद्दा

VBA में, मैं एक पंक्ति को कैसे सम्मिलित / सम्मिलित (कॉपी) करूँ और यह सुनिश्चित करूँ कि यदि स्रोत पंक्ति किसी स्तंभ श्रेणी को काट दे, कि नई पंक्ति भी सीमा में होगी और सीमा 1 से बढ़ जाएगी (अर्थात सम्मिलित पंक्ति) ।

यदि कर्सर एक पंक्ति पर है जो एक सीमा के शीर्ष पर है, तो नई पंक्ति सीमा का सदस्य नहीं बनती है और सीमा एक पंक्ति से आकार नहीं बढ़ाती है।

xlUp और xlDown में कोई अंतर नहीं है, और न ही उन्हें छोड़ना है (जो एक्सेल कहता है कि यदि आपके पास स्तंभ स्तंभ हैं तो सबसे अच्छा काम करना है)।

उपाय

मैं इसे पूरी तरह से स्वचालित बना रहा हूं। आपको रेंज का नाम नहीं चाहिए। मैक्रो "परीक्षण" करता है। केवल इनपुट जो आपको रखना है वह यह है कि आपको इनपुट बॉक्स के आने पर पंक्ति की संख्या को टाइप करने के लिए हटाना होगा जैसे 2 या 3 या 4। मैक्रो "पूर्ववत" करता है जो मैक्रो करता है उसे पूर्ववत करता है।

डेटाबेस ए 1 से ए 5 तक इस तरह है

1

2

3

4

5

केवल मैक्रो "टेस्ट" चलाने के लिए कुछ भी न करें (दोनों मैक्रो को मॉड्यूल में कॉपी किया जाना चाहिए)। क्षमा करें यह एक जटिल मैक्रो बन गया है। मैंने "आकार" का उपयोग करने की कोशिश की। किसी तरह या अन्य मैं सफल नहीं हुआ। शायद कुछ विशेषज्ञ एक बेहतर समाधान दे सकते हैं। लेकिन यह समाधान काम करता है। यदि आप चाहते हैं कि नामित श्रेणी अलग है, तो इस कथन को आपके अनुरूप करने के लिए मैक्रो "परीक्षण" में इस कथन को संशोधित करें

रेंज ("A2: a4")। नाम = "myrange"

मैक्रो हैं:

मैक्रो 1

 उप परीक्षण ()

डिम आर अस रेंज, जे अस इंटेगर, के अस इंटेगर, एम अस इंटेगर

पूर्ववत

रेंज ("A2: a4")। नाम = "myrange"

सेट आर = रेंज ("मायरेंज")

एम = वर्कशीटफ़ंक्शन.काउंट (आर)

'MsgBox मी

k = InputBox ("चयनित होने के लिए पंक्ति की संख्या लिखें")

पंक्तियाँ (के) .Select

सेट आर = रेंज ("मायरेंज")

j = Range ("myrange")। सेल (1, 1) .Row

'MsgBox j

Selection.Rows.Insert

यदि चयन

ActiveWorkbook.Names ( "myrange")। हटाएं

श्रेणी (कक्ष) (चयन। कैसे, "A"), r.Cells (m, 1))। नाम = "व्यवस्था"

अगर अंत

MsgBox रेंज ("myrange")। पता

अंत उप

मैक्रो 2

 पूर्ववत करें ()

डिम आर अस रेंज, सी अस रेंज

सेट आर = रेंज (रेंज ("ए 1"), सेल (पंक्तियाँ.काउंट, "ए")। एंड (xlUs)

आर में प्रत्येक सी के लिए

अगर c = "" तो c.EntireRow.Delete

अगला सी

अंत उप

ध्यान दें

इस टिप के लिए venkat1926 को धन्यवाद
पिछला लेख अगला लेख

शीर्ष युक्तियाँ