اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

السلام عليكم و رحمة الله و بركاته

اما بعد

اخواني اريد طريقة حذف الصفوف الفارغة بـ vba ..

واريدها يحذف الصفوف عندما تصبه خلية معينة فارغة

مثلا عندما تصبح الخلية c5 فارغة يحذف لي الصف 5 بأكمله

حتى ولو A و B ليسو فارغين

ان شاء الله تكونو فهمتموني وشكرا

قام بنشر

جرب الكود التالي

Sub Delete_Rows_Using_Filter_Method()
    Dim Rng As Range
    
    Application.ScreenUpdating = False
        On Error Resume Next
        With ActiveSheet
            .AutoFilterMode = False
            .Range("A1:C" & .Cells(Rows.Count, 1).End(xlUp).Row).AutoFilter Field:=3, Criteria1:=""
            Set Rng = .Range("A2:C" & .Cells(Rows.Count, 1).End(xlUp).Row).SpecialCells(xlCellTypeVisible)
            .AutoFilterMode = False
            Rng.EntireRow.Delete
        End With
    Application.ScreenUpdating = True
End Sub

تقبل تحياتي

 

أخي الكريم عبد السلام

بارك الله فيك وجزاك الله كل خير

بصراحة أحاول دائماً الابتعاد عن الحلقات التكرارية ، وقد ذكرت من قبل سبب تخوفي من ذلك

بفرض أن الملف يتعامل مع مثلاً 10 آلاف صف .. مع هذا الكم الهائل سيكون الكود بطيء جداً

جربت الكود الخاص بي وحسبت المدة الزمنية في ملف يحتوي 10 آلاف صف فاستغرق 1.3 ثانية في حين أن استخدام الحلقات التكرارية استغرق حوالي 12 ثانية

تقبل تحياتي

  • Like 4
قام بنشر

استاذنا الفاضل ياسر .. استمتع جدا بالنقاش وتبادل الافكار والاراء حول تنوع الحلول 

لم اجرب الكودين واقارن بين سرعتهما .. لان من الواضح كود حضرتك اسرع .. ويكون الفارق ملحوظ عن زيادة حجم البيانات 

قمت بوضع هذا الحل لعله سريع ويفي بالغرض .. ولم استعمل اكواد التسريع

في حالة البيانات الكبيرة غالبا ما استعمل جملة SQL لانها اسرع في التصفية

عند تنوع الاجابات يكون بامكان السائل اختيار مايناسبه حسب البيانات التي يتعامل معها 

سعدت جدا بمرورك وان شاء الله ساطرح موضوع حول تسريع وتحسين الاكواد لاحقا

* ملاحظة .. كودي بالاعلي فيه خطا .. لكن كود استاذنا ياسر افضل وليس هناك داعي للتعديل

  • Like 1
قام بنشر

أخي الحبيب عبد السلام

ما هو الخطأ في الكود الذي قدمته؟؟!!

 

هلا علمتنا كيفية بناء جمل الـ SQL لأنه ليس لدينا خبرة بها

بارك الله فيك وجزاك الله خير الجزاء

قام بنشر

بالنسبة للخطأ .. لو افترضنا ان الخلايا في  الصفين 4 و 5  فارغة .. فالكود سوف يحذف الصف الرابع ويصبح الخامس هو الرابع .. اي ان الكود لن يفحصه مجددا بل ينتقل للصف السادس مباشرة 

وبالنسبة لجملة SQL ان شاء الله ساقوم بشرحها قريبا

استاذ سليم .. الكود ممتاز جدا

  • Like 2
  • 5 years later...
قام بنشر
في ٢٩‏/٥‏/٢٠١٦ at 05:07, سليم حاصبيا said:

 بعد اذن الاخوة الافاضل \هذا الكود من سطر واجد

Sub salim()
Range("c1:c" & Cells(Rows.Count, 3).End(3).Row).SpecialCells(4).EntireRow.Delete
End Sub

 

بعد من فضلك ممكن شرح للكود

قام بنشر

الكود ينفذ المطلوب

حذف الصف كاملا EntireRow.Delete

لخلايا العمود c من الصف الأول إلى آخر صف مكتوب فيه  Cells(Rows.Count, 3).End(3).Row

بشرط أن تكون الخلايا فارغة SpecialCells(4)

بالتوفيق 

  • Like 3
زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information