بارك الله فيك , المشكلة انى لم اشرح المطلوب بدقة كافية
المطلوب هو كيفية ايقاف كود عن العمل بعد تحقق شرط معين
بمعنى كيف يتم ايقاف عمل كود اخفاء الاعمدة ذات الرأس الممتلئ ببيانات
وذلك بشرط الا اغير قيمة الخلية الشرطية بمعنى اننى اختار اضافة اذون المشتريات فيقوم البرنامج من تلقاء نفسه بأخفاء الاذون المسجلة وعرض اول عمود فارغ لاسجل به اذن جديد وفى نفس الوقت تعود قيمة الخلية الشرطية A1 الى الحالة الفارغة
بفرض اننى كتبت الكود التالى
() Sub B_Click
Dim r1 As Range
("For Each r1 In Sheets("Sheet1").Range("A5:q5
If r1.Value = "" Then r1.Columns.Hidden = True
Next r1
End Sub
وقمت بأستدعائه كما يلى
If Sheets("Sheet1").Range("A1").Value = "hide" Then B_Click
المطلوب انه يقوم بتنفيذ الاجراء B_Click مرة واحدة ثم يتم ايقاف عمل B_Click تلقائياً وتعود قيمة الخليةA1 فارغه لحين اختيار القيمة hide فى الخلية A1
كما لو اننى استخدمت button لتنفيذ هذه الاجراء
ولكم كل الشكر والتقدير
قمت بعمل تعديل بسيط استخدمت call لاستدعاء الكود عندما تكون الخلية بها قيمة ويظل undo يعمل طالما الخلية فارغه ولكنى اريد ان تعرض كامل البيانات اذا كانت الخلية فارغه مع توقف عمل الكود بحيث يظل undo يعمل
تعديل Call فلتر بقيمة خلية.rar
جزاك الله خير ,, ولكن لاختصار خطوات العمل قمت بعمل البحث داخل خلية
هل ممكن تعديل للكود بحيث انه يعمل على الخلية ولكن يدعم undo , redo ولا مفيش امكانية لذلك
If Range("A3").Value = "" Then
ActiveSheet.Range("A5:Q2300").AutoFilter Field:=1
Else
("With Sheets("Sheet1
Range("A5:Q2300").AutoFilter Field:=1, Criteria1:=.Range("A3").Value
End With
End If
استخدمت الكود السابق لعمل فلتر متغير بقيمة الخلية A3 ولكنى لاحظت توقف خاصية undo و redo بمجرد تفعيل الكود على procedure
(Private Sub Worksheet_Change(ByVal Target As Range
ارجو الافادة