ביטול הסתרת גיליונות מתוך רשימה

messi789311

New member
ביטול הסתרת גיליונות מתוך רשימה

הי,
בקובץ שלי (מצ"ב לדוגמא) גיליונות רבים , בחלקם מוסתרים.
על בסיס די קבוע אני צריך לבטל הסתרה של מספר גיליונות והפרוצדורה הרגילה ארוכה (קליק ימני על לשונית גיליון>בטל הסתרה וחוזר חלילה....).
אשמח למקרו שיתן רשימה נפתחת של כל הגיליונות המוסתרים וממנה אבחר את הגיליונות שאני רוצה לבטל את הסתרתם ובמילים אחרות במכה אחת אבטל הסתרה של מספר גיליונות לפי בחירה.
אם הפעולה ההפוכה גם תתאפשר , קרי הסתרה של מספר גיליונות ( לפי בחירה) במכה אחת , יצאתי מפה שמח כפליים.
תודה מראש
 

iyyi

New member
בקובץ המצורף הוספתי בגיליון 1 רשימת גליונות...

בעמודה B אתה יכול לבחור מרשימה אם להסתיר אותם.
הוספתי לקובץ שני מקרואים. הראשון מסתיר את הגיליונות שכתוב לידם כן. להלן קוד המקרו:
קוד:
Sub HideList()
Lr = Cells(Cells.Rows.Count, 1).End(xlUp).Row
For i = 2 To Lr
    If Cells(i, 1).Offset(0, 1).Value = "כן" Then Sheets(Cells(i, 1).Value).Visible = False Else _
    Sheets(Cells(i, 1).Value).Visible = True
 Next i
End Sub

השני מציג את את הגיליונות בקובץ. להלן הקוד שלו:
קוד:
Sub UnHideAll()
For Each sh In ActiveWorkbook.Sheets
    sh.Visible = True
Next
Sheets(1).Select
End Sub

הוספתי שני כפתורים להפעלת כל מקרו
 

messi789311

New member
תודה אבל המקרו הזה לא מתייחס לכמות משתנה של גיליונות

מה שהמקרו צריך לעשות הוא לזהות כמה גיליונות יש בקובץ , כמה מוסתרים ולהפיק רשימה של המוסתרים ממנה תינתן האפשרות לבחור את הגיליונות שברצונינו להסיר להם את ההסתרה.
האם זה אפשרי ?
 

מיכאל אבידן

Member
מנהל
אז ככה . . .


עצתי לך:

1. שנה את שמו של 'גיליון1' ל'כללי'.

2. הצב במודול אותו גיליון את מקרו האירוע שלהלן.

3. ניתן יהיה להוסיף עוד קטע קוד כדי למיין את שמות הגיליונות בעמודה "A".
קוד:
Private Sub Worksheet_Activate()
      SC = Sheets.Count
      ActiveSheet.Columns(1).Clear
      For SH = 2 To SC
            Cells(SH, 1) = Sheets(SH).Name
            With Cells(SH, 2).Validation
                   .Delete
                   .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="כן,לא"
             End With
             Cells(SH, 2) = "לא"
      Next
End Sub
 

u333

New member
נסה את הקובץ המצורף

  • אני מניח שאת גיליון1 לא תסתיר אף פעם.
  • לחיצה על הלחצן העליון תתן לך בעמודה A רשימה מעודכנת של כל הגיליונות המוסתרים
  • סמן ב-"x" בעמודה B מול כל גיליון שברצונך לבטל הסתרתו ולחץ על הלחצן התחתון.
  • הרשימה בעמודה A תתעדכן אוטומטית.
 

u333

New member
ואם חשקה נפשך ברשימה נפתחת ממנה ניתן לבחור....

ללא עמודת עזר וכד' - ראה הקובץ המצורף.
  • לחץ על הלחצן בגיליון 1
  • בחר את הגיליונות מתוך הרשימה הנפתחת. ניתן לבחור כמה גיליונות שרוצים.
  • לחץ לחצן הוורוד.
 

u333

New member
שיפור קל בקודי המודול והטופס. הפעולה נשארה ללא שינוי.

קוד המודול:

קוד:
Sub ListBoxAllHiddenSheets()
    For Each sh In ActiveWorkbook.Sheets
        If sh.Visible = 0 Then UserForm1.ListBox1.AddItem sh.Name
    Next
UserForm1.Show
End Sub
קוד הטופס:
קוד:
Private Sub CommandButton1_Click()
Dim mycoll As New Collection
lc = ListBox1.ListCount
    For Each sh In ActiveWorkbook.Sheets
        If sh.Visible = 0 Then mycoll.Add sh.Name
    Next
    For p = 2 To lc + 1
         If ListBox1.Selected(p - 2) = True Then Sheets(mycoll(p - 1)).Visible = 1
    Next
Unload Me
End Sub
 
למעלה