الجمعة، 18 مارس 2022
  3 الردود
  9.7 ألف زيارة
0
الأصوات
فك
أقوم بإعداد جدول بيانات لتوجيه البيانات للاختبار التحليلي للمنتجات الكيميائية. أرغب في قفل كل سطر من البيانات بمجرد التحقق من نسخ البيانات المذكورة بواسطة المراجع. أنا قادر على قفل سطر واحد باستخدام هذا الرمز في VBA:

ورقة عمل فرعية خاصة تغيير (هدف ByVal كنطاق)
إذا كان النطاق ("X3") = "لا" إذن
النطاق("B3:W3").مقفل = خطأ
ElseIf Range("X3") = "Yes" إذن
النطاق("B3:W3").مقفل = صحيح
إنهاء حالة
نهاية الفرعية

يحتوي العمود X على قائمة منسدلة تحتوي على "نعم" و"لا" كخيارين. أرغب في قفل كل سطر من البيانات، عند إضافته إلى الورقة، بمجرد قيام المراجع بتحديد نعم في هذا العمود للتأكد من عدم إجراء تغييرات غير مقصودة على البيانات السابقة. هل هذا ممكن دون الحاجة إلى تكرار الكود لكل سطر إلى أجل غير مسمى؟
منذ سنوات 2
·
#2529
الإجابة المقبولة
1
الأصوات
فك
مرحبًا ستيفاني إس،

يرجى تجربة الكود أدناه، إذا كان لديك أي أسئلة أخرى، فلا تتردد في طرحها علي.

أماندا

Private Sub Worksheet_Change(ByVal Target As Range)
Dim xPassword As String
Dim xRgAddress As String
Dim xLockRgAddress As String
Dim Row As Integer

xPassword = "123456" 'Please replace 123456 with the password that protects the spreadsheet.
On Error Resume Next

If (Target.Column <> 24) Then
Exit Sub
End If

Row = Target.Row


If Target = "Yes" Then
If ActiveSheet.Range("B" & Row & ":W" & Row).Locked = False Then
ActiveSheet.Unprotect (xPassword)
ActiveSheet.Range("B" & Row & ":W" & Row).Locked = True
ActiveSheet.Protect Password:=xPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
ElseIf Target = "No" Then
If ActiveSheet.Range("B" & Row & ":W" & Row).Locked = True Then
ActiveSheet.Unprotect (xPassword)
ActiveSheet.Range("B" & Row & ":W" & Row).Locked = False
ActiveSheet.Protect Password:=xPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End If


End Sub
منذ سنوات 2
·
#2522
0
الأصوات
فك
أحتاج أيضًا إلى أن أتمكن من تغيير حالة هذه الخلايا من غير مقفلة إلى مقفلة أثناء حماية جدول البيانات، وإلا فإن هذه الميزة ستكون عديمة الفائدة.
منذ سنوات 2
·
#2529
الإجابة المقبولة
1
الأصوات
فك
مرحبًا ستيفاني إس،

يرجى تجربة الكود أدناه، إذا كان لديك أي أسئلة أخرى، فلا تتردد في طرحها علي.

أماندا

Private Sub Worksheet_Change(ByVal Target As Range)
Dim xPassword As String
Dim xRgAddress As String
Dim xLockRgAddress As String
Dim Row As Integer

xPassword = "123456" 'Please replace 123456 with the password that protects the spreadsheet.
On Error Resume Next

If (Target.Column <> 24) Then
Exit Sub
End If

Row = Target.Row


If Target = "Yes" Then
If ActiveSheet.Range("B" & Row & ":W" & Row).Locked = False Then
ActiveSheet.Unprotect (xPassword)
ActiveSheet.Range("B" & Row & ":W" & Row).Locked = True
ActiveSheet.Protect Password:=xPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
ElseIf Target = "No" Then
If ActiveSheet.Range("B" & Row & ":W" & Row).Locked = True Then
ActiveSheet.Unprotect (xPassword)
ActiveSheet.Range("B" & Row & ":W" & Row).Locked = False
ActiveSheet.Protect Password:=xPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End If


End Sub
منذ سنوات 2
·
#2531
0
الأصوات
فك
شكراً جزيلاً! هذا الرمز يعمل بشكل مثالي. ما زلت جديدًا جدًا على VBA لذا فأنا أقدر مساعدتك حقًا! :)
  • الصفحة:
  • 1
لا توجد ردود لهذا المنصب حتى الآن.