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

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

قام بنشر

ممكن كود لإخفاء أعمدة محددة ثم إظهارها واخفاء أعمدة أخرى استنادا لتحديد قائمة منسدلة

أو رجاء توجيهي لموضوع ذات صلة لأني بحثت ولم أجد كود يحقق الشروط المطلوبة ربما لأن معرفتي بالأكواد محدودة جداً، وجزاكم الله خيرا

الشرح في المرفقات
 

مرتبات.rar

قام بنشر

جرب هذا الملف

الكود

Sub Show_hide_col()
Application.ScreenUpdating = False
Dim my_rg As Range
Dim i%, x%
Dim t As Byte
 t = IIf([b1] = "اداري", 1, 2)
Set my_rg = Range("E1:AT1")
my_rg.Columns.Hidden = False
x = my_rg.Columns.Count
 For i = 1 To x
  If my_rg.Cells(i) <> t Then
    my_rg.Cells(i).EntireColumn.Hidden = True
    End If
    Next
    Application.ScreenUpdating = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$B$1" Then
Show_hide_col
End If
Application.EnableEvents = True
End Sub

الملف مرفق

 

مرتبات.xlsm

  • Like 2
  • Thanks 1
قام بنشر (معدل)

جزاكم الله خيرا استاذ سليم على سرعة الاستجابة والمجهود والعمل الأكثر من رائع 
ولكن لي طلب بما ان الكود صعب علي التعديل عليه
رجاء استثناء اخفاء الأعمدة البينية المبينة بالصف الأول بدون أرقام
ولكم جزيل الشكر والتقدير استاذنا الفاضل

تم تعديل بواسطه أبو فيروز
  • Like 1
قام بنشر

حاولت التعديل في الكود بحيث يقتصر إخفاء الأعمدة على دلالة الأرقام بالصف الأول واستثناء الأعمدة ذات الخلايا البينية الفارغة ولكني فشلت

  • Like 1
قام بنشر

استبدل الكود الى هذا

Option Explicit

Sub Show_hide_col()
Application.ScreenUpdating = False
Dim my_rg As Range
Dim i%
Dim t As Byte
 t = IIf([b1] = "اداري", 1, 2)
Set my_rg = Range("E1:AT1")
my_rg.Columns.Hidden = True

For i = 1 To my_rg.Columns.Count
      With my_rg.Cells(i)
       If .Value = t Or _
          .Value = vbNullString Then _
          .EntireColumn.Hidden = False
      End With
Next
    Application.ScreenUpdating = True
End Sub
Rem=================================
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$B$1" Then
Show_hide_col
End If
Application.EnableEvents = True
End Sub

الملف معدل

_salimمرتبات.xlsm

  • Like 2
  • Thanks 1
قام بنشر

لو تكرمت استاذ سليم
الكود يعمل بشكل رائع لكن بعد نسخه للورقة الأصلية لا يعمل إلا بعد عمل قائمة منسدلة في خلية أخرى مثل B2 غير مرتبطة بمعادلات البحث INDEX والتنويه اليها في الكود
حيث اختار أولا من قائمة الإخفاء ثم قائمة البحث أو العكس .. لكن لا يتم إخفاء الأعمدة مع البحث 

هل استمر على ذلك أم هناك خطأ مني؟

ولكم جزيل الشكر

 

قام بنشر (معدل)
في ١٨‏/١‏/٢٠١٩ at 17:39, سليم حاصبيا said:

استبدل الكود الى هذا


Option Explicit

Sub Show_hide_col()
Application.ScreenUpdating = False
Dim my_rg As Range
Dim i%
Dim t As Byte
 t = IIf([b1] = "اداري", 1, 2)
Set my_rg = Range("E1:AT1")
my_rg.Columns.Hidden = True

For i = 1 To my_rg.Columns.Count
      With my_rg.Cells(i)
       If .Value = t Or _
          .Value = vbNullString Then _
          .EntireColumn.Hidden = False
      End With
Next
    Application.ScreenUpdating = True
End Sub
Rem=================================
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$B$1" Then
Show_hide_col
End If
Application.EnableEvents = True
End Sub

الملف معدل

_salimمرتبات.xlsm

السلام عليكم

واجهتني مشكلة في تشغيل الكود على الملف الأصلي في الورقة m1 
أرجوا ألا اثقل عليك 
الملف الأصلي في المرفقات وبه الكود 

أسعد الله جميع أوقاتكم بكل خير
 

 

 

مرتبات.rar

تم تعديل بواسطه أبو فيروز
قام بنشر (معدل)
في ١٨‏/١‏/٢٠١٩ at 17:39, سليم حاصبيا said:

استبدل الكود الى هذا


Option Explicit

Sub Show_hide_col()
Application.ScreenUpdating = False
Dim my_rg As Range
Dim i%
Dim t As Byte
 t = IIf([b1] = "اداري", 1, 2)
Set my_rg = Range("E1:AT1")
my_rg.Columns.Hidden = True

For i = 1 To my_rg.Columns.Count
      With my_rg.Cells(i)
       If .Value = t Or _
          .Value = vbNullString Then _
          .EntireColumn.Hidden = False
      End With
Next
    Application.ScreenUpdating = True
End Sub
Rem=================================
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$B$1" Then
Show_hide_col
End If
Application.EnableEvents = True
End Sub

الملف معدل

_salimمرتبات.xlsm

حل مؤقت به نوع من الصعوبة على قدر معرفتي الضئيلة

كنت أتمنى ان يكون مبسط على أي مستخدم بعد الاختيار من القائمة المنسدلة بالورقة m1 يتم البحث مع الإخفاء للأعمدة الغير مرغوب فيها حسب الوظيفة

بالملف المرفق pass= 3599011

 

 

مرتبات.rar

تم تعديل بواسطه نــــ حلمي ــوّار
قام بنشر
في ١٨‏/١‏/٢٠١٩ at 17:39, سليم حاصبيا said:

استبدل الكود الى هذا


Option Explicit

Sub Show_hide_col()
Application.ScreenUpdating = False
Dim my_rg As Range
Dim i%
Dim t As Byte
 t = IIf([b1] = "اداري", 1, 2)
Set my_rg = Range("E1:AT1")
my_rg.Columns.Hidden = True

For i = 1 To my_rg.Columns.Count
      With my_rg.Cells(i)
       If .Value = t Or _
          .Value = vbNullString Then _
          .EntireColumn.Hidden = False
      End With
Next
    Application.ScreenUpdating = True
End Sub
Rem=================================
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$B$1" Then
Show_hide_col
End If
Application.EnableEvents = True
End Sub

الملف معدل

_salimمرتبات.xlsm

حل مؤقت به نوع من الصعوبة على قدر معرفتي الضئيلة

كنت أتمنى ان يكون مبسط على أي مستخدم بعد الاختيار من القائمة المنسدلة بالورقة m1 يتم البحث مع الإخفاء للأعمدة الغير مرغوب فيها حسب الوظيفة

بالملف المرفق pass= 3599011

 

قام بنشر
الان, نــــ حلمي ــوّار said:

الملف بالأصل لأستاذي الفاضل محمد صالح جعله الله في ميزان حسناته
أعمل به منذ 2013 لكني فضولي جعلني اتطفل وأقوم بتغيير بعض المفردات بما يتناسب مع ادارتنا التعليمية بكفرالشيخ

أعتذر للجميع

 

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.

×
×
  • اضف...

Important Information