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

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

قام بنشر

السلام عليكم السادة الخبراء

رجاء المساعدة فى تعديل الكود التالى لكي يعمل على الصفوف ارقام من 9 الى 21 فقط و باقى الشيت لا يشمله الكود

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect "45"
Target.Locked = True
ActiveSheet.Protect "45"
End Sub

مرفق ملف للتوضيح

شكرا جزيلا 
 

كود حماية.xlsm

قام بنشر

جرب هذا الكود
يعمل على الصفوف من 9 إلى 21 فقط

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row >= 9 And Target.Row <= 21 Then
ActiveSheet.Unprotect "45"
Target.Locked = True
ActiveSheet.Protect "45"
End If
End Sub

يعمل هذا الكود عن طريق التحقق من الصف الذي تم تغييره. إذا كان الصف يقع بين 9 و 21 ، فسيتم فك حماية الورقة وتأمين الخلية وإعادة تأمين الورقة. إذا لم يكن الصف يقع بين 9 و 21 ، فلن يتم فعل أي شيء

  • Like 1
قام بنشر

الف الف شكر استاذنا الفاضل أ / محمد صالح

الف الف شكر استاذنا الفاضل أ / على بن على

تعديل الكود رائع و يعمل جيدا 

زادكم الله من فضله و علمه

 

السلام عليكم الاساتذة الافاضل

الف شكر على تعب حضراتكم

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

 

الاستاذ على بن على 

الف شكر لحضرتك لكن الكود يعمل تلقائى المطلوب عند الضغط على زر تشغيل يشتغل غير ذلك لا يعمل

  • 3 weeks later...
  • أفضل إجابة
قام بنشر

كود الاستاذ الفاضل حسونه حسين و هو ينفذ المطلوب بشكل احترافى


Option Explicit
Sub CClose()
    Dim Ws As Worksheet, RangeArea As Range, C As Range, MergedRange As Range
    kh_Application False
    Set Ws = ThisWorkbook.ActiveSheet
    With Ws
    Set RangeArea = .Range(.Cells(1, 1).Address, .Cells(653, IIf(ActiveCell.Column = 1, 1, ActiveCell.Column - 1)).Address)
    .Unprotect Password:="1"
    If ActiveCell.Row <= 653 Then
        For Each C In RangeArea
            If C.MergeCells = True And C.MergeArea.Rows.Count = 1 Then
                Set MergedRange = C.MergeArea
                MergedRange.UnMerge
                MergedRange.HorizontalAlignment = xlCenterAcrossSelection
            End If
        Next C
        RangeArea.Locked = True
    End If
    .Protect Password:="1", DrawingObjects:=True, Contents:=True, Scenarios:=True
    End With
    kh_Application True
End Sub

Sub COpen()
    kh_Application False
    ActiveSheet.Unprotect Password:="1"
    If ActiveCell.Row <= 653 Then
        Range(Cells(1, 1).Address, Cells(653, ActiveCell.Column).Address).Locked = False
    End If
    ActiveSheet.Protect Password:="1", DrawingObjects:=True, Contents:=True, Scenarios:=True
    kh_Application True
End Sub
Sub kh_Application(ibol As Boolean)
    With Application
        .ScreenUpdating = ibol
        .Calculation = IIf(ibol, -4105, -4135)
        .EnableEvents = ibol
    End With

End Sub

 

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

  • Like 1

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