Hello World 😉
-
שלום כולם,
פעם ראשונה שאני כותב יותר מכמה שורות קוד,
לצערי זה בVBA ולא במשהו יותר מעניין, פשוט זה מה שהייתי צריךרציתי לסנן עם הסליקרים של אקסל חודש הנוכחי
מצרף את התוצאה הרצויה שב"ה עובדת
וזה הקוד:
Sub סנן_להיום() 'שם הסליקר SlicerMonth = "Slicer_חודש2" SlicerYear = "Slicer_שנה2" 'ביטול סינונים קודמים ActiveWorkbook.SlicerCaches(SlicerMonth).ClearManualFilter ActiveWorkbook.SlicerCaches(SlicerYear).ClearManualFilter 'ספירת פריטים בסליקר Dim countSlicerMonth As Integer Dim countSlicerYear As Integer countSlicerMonth = ActiveWorkbook.SlicerCaches(SlicerMonth).SlicerItems.Count - 1 countSlicerYear = ActiveWorkbook.SlicerCaches(SlicerYear).SlicerItems.Count - 1 'כיבוי כל הפריטים Dim i As Integer For i = 1 To countSlicerMonth ActiveWorkbook.SlicerCaches(SlicerMonth).SlicerItems(i).Selected = False Next i For i = 1 To countSlicerYear ActiveWorkbook.SlicerCaches(SlicerYear).SlicerItems(i).Selected = False Next i 'הגדרת התאריכים Dim myMonth As String Dim myYear As String myMonth = Month(Date) myYear = Year(Date) 'הפעלת התאריכים ActiveWorkbook.SlicerCaches(SlicerMonth).SlicerItems(myMonth).Selected = True ActiveWorkbook.SlicerCaches(SlicerYear).SlicerItems(myYear).Selected = True End Sub
הייתי שמח עם הערות על הקוד מבחינת הכל
המבנה המתודות וכל השאר שאני לא יודע עדיין איך קוראים לזה
כי אני עדיין בהתחלה ולא רוצה להשאר עם טעיותתודה!!
-
נראה מעולה! תמשיך ככה!
ההערה הראשונה זה שם המתודה. אל תשתמש בעברית (עשית זאת נהדר בקוד עצמו שהכל באנגלית).
שנית, הקוד הזה מניח קצת הנחות. למשל לכאורה הוא יקרוס אם מישהו ינקה את הסינונים (אני לא הכי מכיר VBA עם אקסל, אני צודק?). לפי הספר, כשתעשה תוכנה מקצועית עליך לדמיין כל תרחיש אפשרי ולהגיב בהתאם.כעת שאלות:
ActiveWorkbook.SlicerCaches(SlicerYear).SlicerItems.Count - 1
למה המינוס 1?
-
@dovid אמר בHello World
:
למשל לכאורה הוא יקרוס אם מישהו ינקה את הסינונים
לא הבנתי, אתה מתכוון אם מישהו ביטל את הסינון לפני שהפעיל את הקוד?
אם כן התשובה שזה לא קורס, בשונה מביטול פילטר על טבלה עצמה שאז זה אכן קורס אם אין פילטר@dovid אמר בHello World
:
כעת שאלות:
ActiveWorkbook.SlicerCaches(SlicerYear).SlicerItems.Count - 1למה המינוס 1?
כי התוצאה משום מה היה 1 יותר ממה שיש בפועל,
אני חושב שזה בגלל שיש עוד פריט שזה מוסתר מכיוון שזה ריקותודה על העידוד!
מחזק!