اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

VBA مسح خلايا


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

السلام عليكم عندى كود وهو

Sub AAA()

Sheets("123").Range("A1:A500").ClearContents

End Sub
ولكنه لا يمسح الخانات اللى بها فلتر 

فأنا اريد يمسح جميع الخانات حتى المخفيه 

مع الشكر

رابط هذا التعليق
شارك

هذا الكود يسمح الخلايا المخفية

Sub AAA()
Dim rng As Range
For Each rng In Sheets("123").Range("A1:A500")
rng = ""
Next
End Sub

 

تم تعديل بواسطه عبدالسلام ابوالعوافي
  • Like 1
رابط هذا التعليق
شارك

استاذ سليم .. يمكنك ان تطبق الكودين علي الخلايا المفلترة وتجد الفرق .. كودك صحيح في حالة الخلايا المخفية وليست المفلترة

  • Like 1
رابط هذا التعليق
شارك

شكرا للاستاذ سليم  حاصبيا  وشكرا ايضا للاستاذ عبدالسلام ابو العوافى 

وبالفعل الكود الخاص بالاستاذ  عبدالسلام ابو العوافى  هو ما كنت ابحث عنه 

ولكن هل يوجد كود اخر يكون اسرع من ذلك حيث ان الجدول الخاص بى يحتوى على حوالى 5000 سطر

مع الشكر وجعله الله فى ميزان حسناتكم

 

تم تعديل بواسطه عصام مسعد
كلمه على
رابط هذا التعليق
شارك

منذ ساعه, سليم حاصبيا said:

جرب هذا الكود


Sub del_rg()
With Sheets("123")
.AutoFilterMode = False
.Range("a1:a5000") = ""
End With
End Sub

 

جميل بس كنت محتاج كود ميفكش الفلتر لاننى عامل الفلتر فى مكان غير المطلوب مسحه بمعنى اننى عامل فلتر فى B واريد ان امسح A . وشكرا جزيلا للاهتمام

رابط هذا التعليق
شارك

أعتقد أنه من الأفضل إرفاق ملفك المرفق

ولكن كفكرة مبدئية يمكن إزالة الفلترة بالكود ثم مسح النطاق المطلوب مسحه ثم إعادة الفلترة مرة أخرى ، وبالتالي يتم حل المشكلة

  • Like 2
رابط هذا التعليق
شارك

كود اسرع

Sub AAA()
    Dim i As Integer

    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    For i = 1 To 5000
        Cells(i, 1) = Null
    Next
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
    End With

End Sub

 

  • Like 1
رابط هذا التعليق
شارك

9 دقائق مضت, عبدالسلام ابوالعوافي said:

كود اسرع


Sub AAA()
    Dim i As Integer

    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    For i = 1 To 5000
        Cells(i, 1) = Null
    Next
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
    End With

End Sub

 

احييك على ذكائك والف الف شكر وربنا يجعله فى ميزان حسناتك - هو ديه المطلوب 

رابط هذا التعليق
شارك

ولكن ما زالت الحلقات التكرارية قائمة أخي الحبيب عبد السلام

أعتقد من الأفضل إلغاء الفلترة في النطاق ثم مسح النطاق المطلوب ثم إرجاع النطاق للفلترة بالشرط المسبق ..

تقبل تحياتي

  • Like 2
رابط هذا التعليق
شارك

استاذنا ياسر 

لا اعلم لما تتخوف وتتحاشى الحلقات التكرارية بالرغم انها اساس العمل في الكثير من الدوال

مثلا لو عملنا دالة Lookup  او Sum  او Index فإن الاكسل سيقوم بفحص كل الخلايا في النطاق .. يعني انه سيستخدم الحلقات التكرارية

لو قمنا بالفلترة مثلا سيقوم الاكسل بفحص كل الخلايا في النطاق ومقارنتها بالشروط .. يعني ايضا انه يستخدم الحلقات التكرارية

المثال السابق يحتوي فقط علي 5000 خلية .. يعني لاشي بالنسبة للحاسب الذي يقوم بمئات الملايين من العمليات في الثانية الواحدة

بالرغم من ان الاكسل يعتبر من البرامج البطيئة في معالجة البيانات .. الا اني جرب الكود السابق علي نطاق يساوي عشر اضعاف النطاق السابق .. وكان الزمن المستغرق في حدود الثانية الواحدة فقط .. طبعا يختلف الزمن من جهاز لاخر

ارفقت لك المثال لكي تجرب بنفسك 

اعذرني على الاطالة .. تحياتي

ForLoop.rar

  • Like 2
رابط هذا التعليق
شارك

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

الموضوع أنني عانيت كثيراً في الملفات التي تحتوي على بيانات ضخمة عند استخدام الحلقات التكرارية ..ولكن هذا لا يعني أننا نستغني عنها على الإطلاق

أما رأيي يكمن في أنه طالما يمكن تنفيذ الأمر بدون اللجوء إلى الحلقات التكرارية فلا نتردد في ذلك .. حيث سيكون أسرع في التعامل مع البيانات ..

يمكنني العمل على الملف المرفق من قبل صاحب الموضوع في محاولة لإجراء مقارنة بسيطة ، ولكن يجب إيضاح بعض النقاط ..كشرط الفلترة على سبيل المثال

 

  • Like 4
رابط هذا التعليق
شارك

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

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

Important Information