التفوق - VBA إدراج الصف والحفاظ على عضوية النطاق

القضية

في VBA ، كيف يمكنني نسخ / إدخال (في المكان) صفًا والتأكد من أنه إذا تقاطع الصف المصدر مع نطاق العمود ، فسيكون الصف الجديد أيضًا في النطاق وسيزداد النطاق بمقدار 1 (أي الصف المدرج) .

إذا كان المؤشر على صف في الجزء العلوي من نطاق ، فإن الصف الجديد لا يصبح عضوًا في النطاق ولا يزيد النطاق من حجم بمقدار صف واحد.

لا تحدث فرق بين xlUp و xlDown ، ولا تركهما خارجًا (حيث يقول Excel إنه أفضل شيء يمكنك فعله إذا كان لديك نطاقات أعمدة متقاطعة).

حل

أنا جعله التلقائي بالكامل. لا تحتاج إلى تسمية النطاق. الماكرو "اختبار" يفعل ذلك. الإدخال الوحيد الذي يجب عليك وضعه هو أنه يجب عليك كتابة رقم الصف الذي سيتم حذفه على سبيل المثال 2 أو 3 أو 4 عند ظهور مربع الإدخال. ماكرو "تراجع" يلغي ما يفعله الماكرو.

قاعدة البيانات مثل هذا من A1 إلى A5

1

2

3

4

5

لا تفعل أي شيء فقط قم بتشغيل "اختبار" الماكرو (يجب نسخ كلا الماكرو في الوحدة النمطية). عذرًا ، لقد أصبح ماكرو معقدًا. حاولت استخدام "تغيير الحجم". بطريقة أو بأخرى أنا لم تنجح. ربما يمكن لبعض الخبراء تقديم حل أفضل. لكن هذا الحل يعمل. إذا كنت تريد أن يكون نطاق النطاق المسمى مختلفًا ، فقم بتعديل هذا البيان في الماكرو "اختبار" ليناسبك

النطاق ("A2: a4"). الاسم = "myrange"

وحدات الماكرو هي:

ماكرو 1

 اختبار فرعي ()

Dim r As Range ، j As Integer ، k As Integer ، m As Integer

فك

النطاق ("A2: a4"). الاسم = "myrange"

مجموعة ص = المدى ("myrange")

م = ورقة عمل. العد (ص)

MsgBox م

k = InputBox ("اكتب رقم الصف الذي سيتم تحديده")

الصفوف (ك). حدد

مجموعة ص = المدى ("myrange")

j = النطاق ("myrange"). الخلايا (1 ، 1) .Row

'MsgBox j

Selection.Rows.Insert

إذا Selection.Row = ي ثم

ActiveWorkbook.Names ( "myrange"). حذف

النطاق (الخلايا (Selection.Row ، "A") ، r.Cells (م ، 1)). الاسم = "myrange"

إنهاء إذا

نطاق MsgBox ("myrange"). العنوان

نهاية الفرعية

ماكرو 2

 Sub تراجع ()

خافت ص كما المدى ، ج كما المدى

مجموعة r = النطاق (النطاق ("A1") ، الخلايا (Rows.Count ، "A"). End (xlUp))

لكل ج في ص

إذا كانت c = "" ثم c.EntireRow.Delete

التالي ج

نهاية الفرعية

ملحوظة

بفضل venkat1926 لهذه النصيحة
المقال السابق المقالة القادمة

نصائح الأعلى