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

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

قام بنشر

السلام عليكم ورحمة الله وبركاته ارجو المساعزد في تصحيح الكود التالي ولكم جزيل الشكر

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo ErrorHandler ' معالجة الأخطاء
    
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("فاتورة مبيعات ") ' عدّل الاسم إذا كان مختلفًا
    
    Dim LastRow As Long
    LastRow = ws.Cells(ws.Rows.Count, "F").End(xlUp).Row
    
    ' تحديث المعادلة فقط عند تعديل العمودين F أو E
    If Not Intersect(Target, ws.Columns("F:E")) Is Nothing Then
        Application.EnableEvents = False ' تعطيل الأحداث لمنع الحلقات
        ws.Range("G5:G" & LastRow).Formula = "=IF(AND(F5<>"""", E5<>""""), F5*E5, """")"
        Application.EnableEvents = True ' إعادة تمكين الأحداث
    End If

    Exit Sub

ErrorHandler:
    Application.EnableEvents = True ' تأكد من إعادة تمكين الأحداث في حالة حدوث خطأ
    MsgBox "حدث خطأ: " & Err.Description, vbExclamation
End Sub

طط.xlsm

قام بنشر (معدل)

جرب هدا

Private Sub Worksheet_Change(ByVal Target As Range)
   Dim Lr As Long
   Dim WS As Worksheet:   Set WS = Sheets("فاتورة مبيعات")

    Lr = WS.Cells(WS.Rows.Count, "F").End(xlUp).Row

    Application.EnableEvents = False
    For Each tmp In Target
        If Not Intersect(tmp, WS.Columns("F")) Is Nothing Or Not Intersect(tmp, WS.Columns("E")) Is Nothing Then
            If tmp.Row <= Lr Then
                WS.Cells(tmp.Row, "G").Formula = "=IF(AND(F" & tmp.Row & "<>"""", E" & _
                tmp.Row & "<>""""), F" & tmp.Row & "*E" & tmp.Row & ", """")"
            End If
        End If
    Next tmp
    Application.EnableEvents = True
    Exit Sub

    Application.EnableEvents = True
End Sub

 او 

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ColArr As Long, a As Variant, i As Long
    Dim WS As Worksheet: Set WS = Me

    On Error GoTo SubApp
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual
    ColArr = WS.Columns("E:G").Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
    If Not Intersect(Target, WS.Range("E5:F" & ColArr)) Is Nothing Then
        a = WS.Range("E5:G" & ColArr).Value
          With WS
            For i = 1 To ColArr - 4
                If IsNumeric(a(i, 1)) And IsNumeric(a(i, 2)) Then
                    If Len(a(i, 1)) > 0 And Len(a(i, 2)) > 0 Then
                        a(i, 3) = a(i, 1) * a(i, 2)
                    Else
                        a(i, 3) = ""
                    End If
                Else
                    a(i, 3) = ""
                End If
            Next i
            .Range("E5:G" & ColArr).Value = a
        End With
    End If
SubApp:
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
End Sub

طط.rar

 

النتيجة قيم طط.rar

تم تعديل بواسطه محمد هشام.
  • Like 1
  • Thanks 1
قام بنشر (معدل)

بعد استاذنا الرائع / محمد هشام.

اولا هذا المجهود بعد فضل الله يرجع للاستاذ محمد هشام و الاستاذ / حسونة حسين لقد تعلمنا منهما الكثير اسأل الله ان يمن عليهم بالخير الكثير

هذا الكود VBA بدون ادخال صيغ حسابية فى ورقة العمل فى العمود G

وشرحها كالاتى

  • تعطيل الأحداث: نمنع حدوث أي تغييرات أخرى أثناء تنفيذ الكود لتجنب التكرار اللانهائي.
  • التحقق من الخلية المتغيرة: نتأكد من أن الخلية التي تم تغييرها تقع في العمودين F أو E وأنها ضمن نطاق البيانات.
  • التحقق من صحة البيانات: نتأكد من أن القيم المدخلة في الخليتين F و E هي أرقام. إذا كانت القيم غير رقمية، يتم عرض رسالة خطأ للمستخدم.
  • حساب المجموع الكلي: نقوم بضرب قيمة الكمية في سعر الوحدة ونضع النتيجة في العمود G.
  • تحديد ورقة العمل: يتم تحديد الورقة التي تحتوي على البيانات التي تريد تطبيق التنسيق الشرطي عليها.
  • تحديد النطاق: يتم تحديد النطاق الذي يحتوي على القيم التي سيتم تطبيق التنسيق الشرطي عليها. في هذا المثال، يتم تطبيق التنسيق على العمود G بدءًا من الصف الثاني وحتى آخر صف يحتوي على بيانات.
  • حذف التنسيق الشرطي الحالي: يتم حذف أي تنسيق شرطي موجود مسبقًا على النطاق المحدد.
  • إضافة تنسيق شرطي جديد: يتم إضافة شرط جديد حيث يتم تلوين الخلايا باللون الأحمر إذا كانت قيمتها أقل من صفر (أي سالبة).
  • تخصيص التنسيق: يمكنك تغيير لون الخط، حجم الخط، الخط العريض، والمائل وغيرها من خصائص التنسيق حسب رغبتك.

 

Private Sub Worksheet_Change(ByVal Target As Range)
    ' تحديد ورقة العمل والعمود الأخير للبيانات
    Dim WS As Worksheet: Set WS = Sheets("فاتورة مبيعات")
    Dim Lr As Long: Lr = WS.Cells(WS.Rows.Count, "F").End(xlUp).Row

    ' تعطيل أحداث التغيير مؤقتًا لمنع التكرار اللانهائي
    Application.EnableEvents = False

    ' التحقق من أن الخلية المتغيرة تقع في العمودين F أو E
    If Not Intersect(Target, WS.Range("F:E")) Is Nothing Then
        ' التأكد من أن الصف المتغير ضمن نطاق البيانات
        If Target.Row <= Lr Then
            ' التحقق من أن القيم المدخلة هي أرقام
            If IsNumeric(Target.Value) And IsNumeric(WS.Cells(Target.Row, "E").Value) Then
                ' حساب المجموع الكلي وتعيينه في الخلية المناسبة
                WS.Cells(Target.Row, "G").Value = Target.Value * WS.Cells(Target.Row, "E").Value
          Call staining_negative_cells
            Else
                MsgBox "الرجاء إدخال قيم رقمية صحيحة في عمودي الكمية والسعر."
            End If
        End If
    End If

    ' إعادة تمكين أحداث التغيير
    Application.EnableEvents = True
End Sub
          
          
Sub staining_negative_cells()
    Dim WS As Worksheet
    Set WS = Sheets("فاتورة مبيعات")  ' استبدل باسم الورقة التي تريدها

    ' تحديد النطاق الذي تريد تطبيق التنسيق الشرطي عليه
    With WS.Range("G2:G" & WS.Cells(WS.Rows.Count, "G").End(xlUp).Row)
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, Formula1:="0"
        With .FormatConditions(1).Font
            .Color = -16776961  ' لون أحمر
            .Bold = True
        End With
    End With
End Sub

 

 

طط.rar

تم تعديل بواسطه mahmoud nasr alhasany
  • Like 2

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