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

كود لحذف صفوف


2saad
إذهب إلى أفضل إجابة Solved by محي الدين ابو البشر,

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

على افتراض ان الشيت المطلوب حذف صفوفه هو sheet1

تفضل الكود


Sub DeleteRows()
    Dim i As Integer
    For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
        If InStr(1, ActiveSheet.Cells(i, 1).Value, "تعديل") > 0 Then
            ActiveSheet.Rows(i).Delete
        End If
    Next i
End Sub
 

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

يرجى ملاحظة أن هذا الكود يحذف الصفوف بشكل دائم، لذا يجب تأكيد أن الصفوف التي تريد حذفها تحتوي على كلمة "تعديل" بالفعل قبل تشغيل الماكرو. كما يجب الحذر من استخدام هذا الكود في الصفوف الهامة التي قد يؤدي حذفها إلى فقدان البيانات.

او الشيت النشط

يمكن للكود حذف صفوف الشيت النشط

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

إذا لم يعمل الكود بشكل صحيح، فقد يكون هناك أسباب عدة وراء ذلك. فيما يلي بعض النقاط التي يجب مراجعتها:

1. التأكد من أن الصفوف التي تحتوي على كلمة "تعديل" موجودة في العمود الأول من ورقة العمل.

المقصود بالعمود الأول هو العمود A

2. التأكد من أن الكلمة الدلالية موجودة بالضبط كما هي مكتوبة في الكود، بما في ذلك الأحرف الكبيرة والصغيرة.

3. التأكد من أن الكود المستخدم هو بالضبط الذي تم تقديمه في الإجابة السابقة.

4. التأكد من عدم وجود أي صفوف مخفية في ورقة العمل.

5. التأكد من عدم وجود قيم فارغة أو مسافات إضافية قبل أو بعد الكلمة الدلالية في الصفوف.

6. التأكد من أن لغة Excel تعتمد على اللغة الإنجليزية، وإذا كنت تستخدم Excel بلغة أخرى فمن الممكن أن تحتاج إلى تغيير الكلمة الدلالية في الكود إلى اللغة التي تستخدمها.

إذا لم تتمكن من حل المشكلة بعد مراجعة هذه النقاط، فيمكنك محاولة استخدام الكود التالي بدلاً من الكود السابق:


Sub DeleteRows()
    Dim i As Long
    Dim LastRow As Long
    LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    For i = LastRow To 1 Step -1
        If InStr(1, ActiveSheet.Cells(i, 1).Value, "تعديل") > 0 Then
            ActiveSheet.Rows(i).Delete
        End If
    Next i
End Sub

 

حظ موفق

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

Sub test()
    Dim i As Integer
    With ActiveSheet
        For i = .UsedRange.Rows.Count + 2 To 1 Step -1
            If Trim(.Cells(i, 3)) = "تعديل" Then
                .Rows(i).Delete
            End If
        Next i
    End With
End Sub

 

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

  • أفضل إجابة

خيار آخر قد يكون أسرع 

Sub test()
    Dim i As Integer
    Dim r As Range: Dim tr As Range
    With ActiveSheet
        For i = 1 To .UsedRange.Rows.Count + 2
            If Trim(.Cells(i, 3)) = "تعديل" Then
                If r Is Nothing Then
                    Set r = .Rows(i)
                Else
                    Set r = Union(r, .Rows(i))
                End If
            End If
        Next i
        r.Delete
    End With
End Sub

 

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information