pinkys brain1
New member
שאלה קטנה על מאקרו (שתוביל אולי לשאלה קצת יותר גדולה)
הי,
אני מנסה לבנות איזשהוא דוח במאקרו, ואני די מתחיל בתחום..
כדי לנסות להבין קצת איך הפקודות עובדות ואז לנסות להתאים אותן לשימוש שלי, אני מנסה להקליט את הפעולה העקרונית שאני רוצה, קורא את קטע הקוד שיצא ואז מנסה להכניס אותו לפורמט המאקרו הכללי שאני בונה.
כאשר ניסיתי להקליט קטע קוד שמכיל בתוכו נוסחת מערך, התקבל קוד מוקלט - אבל כאשר ניסיתי להריץ את הקוד הזה (שהוקלט, ללא שינויים) קיבלתי הודעת שגיאה:
"אין אפשרות להגדיר את המאפיין FormulaArray של המחלקה range"
ולא כ"כ הבנתי מה משמעות הדבר (אני מריץ את קטע הקוד שהאקסל עצמו הקליט, והוא טוען שיש בעיה בקטע הקוד שהוא עצמו כתב
)
ואם להיות יותר ספציפיים, אני ממחזר כרגע שאלה שעלאתי לפורום כמה חודשים (כנראה רבים) ואשר קיבלתי עליה תשובה שנותנת מענה על הבעיה.
מדובר על אוכלוסיית עובדים שלכל אחד יש מזהה ונגררת סטטוסים (לביצוע משהו), והמטרה הייתה לראות כמה זמן רצוף כל עובד שוהה בסטטוס הנוכחי שלו
הנוסחא שניתנה בזמנו לבעיה הייתה נוסחת המערך הבאה: (לא הוספתי כאן את ה-ctrl+shift+enter שיוצרת את ה-{} אבל באקסל עצמו כמובן שמופיעה
לאחר שהקלטתי את ביצוע הכנסת הנוסחא הזאת, כולל ה-ctrl+shift+enter ואז העתקת הנוסחא לכל תאי הגיליון, קטע הקוד שנוצר במאקרו הוא:
אבל אז, אם אני מוחק את הנתונים מעמודה G ומנסה להריץ אותה שוב, מתקבלת הודעת השגיאה הכתובה למעלה..
מצורף הגיליון לדוגמא עם הנתונים עליהם הרצתי את הקלטת המאקרו
אשמח אם מישהו יוכל להסביר לי מה הבעיה (ואיך פותרים אותה), בינתיים השיטה (הלא מאוד חכמה אבל בשביל התחלה זה נראה לי בסדר) של הקלטה, ניסיון הבנת הנוסחא ואז יישום שלה אצלי דווקא עבד טוב, אבל הפעם קיבלתי הקלטת קטע קוד שאני אפילו לא מצליח כ"כ להבין
תודה מראש
הי,
אני מנסה לבנות איזשהוא דוח במאקרו, ואני די מתחיל בתחום..
כדי לנסות להבין קצת איך הפקודות עובדות ואז לנסות להתאים אותן לשימוש שלי, אני מנסה להקליט את הפעולה העקרונית שאני רוצה, קורא את קטע הקוד שיצא ואז מנסה להכניס אותו לפורמט המאקרו הכללי שאני בונה.
כאשר ניסיתי להקליט קטע קוד שמכיל בתוכו נוסחת מערך, התקבל קוד מוקלט - אבל כאשר ניסיתי להריץ את הקוד הזה (שהוקלט, ללא שינויים) קיבלתי הודעת שגיאה:
"אין אפשרות להגדיר את המאפיין FormulaArray של המחלקה range"
ולא כ"כ הבנתי מה משמעות הדבר (אני מריץ את קטע הקוד שהאקסל עצמו הקליט, והוא טוען שיש בעיה בקטע הקוד שהוא עצמו כתב
ואם להיות יותר ספציפיים, אני ממחזר כרגע שאלה שעלאתי לפורום כמה חודשים (כנראה רבים) ואשר קיבלתי עליה תשובה שנותנת מענה על הבעיה.
מדובר על אוכלוסיית עובדים שלכל אחד יש מזהה ונגררת סטטוסים (לביצוע משהו), והמטרה הייתה לראות כמה זמן רצוף כל עובד שוהה בסטטוס הנוכחי שלו
הנוסחא שניתנה בזמנו לבעיה הייתה נוסחת המערך הבאה: (לא הוספתי כאן את ה-ctrl+shift+enter שיוצרת את ה-{} אבל באקסל עצמו כמובן שמופיעה
=IF(MAX(--(((F2=F$2:F$699993)*B$2:B$699993)=B2)*(COUNTIF(F$2:F$699993,F2)>1))*(COUNTIF(F$2:F2,F2)=1),TODAY()-MIN(IF((F2=F$2:F$699993)*B$2:B$699993>MAX((A2=A$2:A$699993)*(F2<>F$2:F$699993)*B$2:B$699993),B$2:B$699993)),"")
לאחר שהקלטתי את ביצוע הכנסת הנוסחא הזאת, כולל ה-ctrl+shift+enter ואז העתקת הנוסחא לכל תאי הגיליון, קטע הקוד שנוצר במאקרו הוא:
קוד:
Sub test()
'
'
'
Selection.FormulaArray = _
"=IF(MAX(--(((RC[-1]=R2C[-1]:R699993C[-1])*R2C[-5]:R699993C[-5])=RC[-5])*(COUNTIF(R2C[-1]:R699993C[-1],RC[-1])>1))*(COUNTIF(R2C[-1]:RC[-1],RC[-1])=1),TODAY()-MIN(IF((RC[-1]=R2C[-1]:R699993C[-1])*R2C[-5]:R699993C[-5]>MAX((RC[-6]=R2C[-6]:R699993C[-6])*(RC[-1]<>R2C[-1]:R699993C[-1])*R2C[-5]:R699993C[-5]),R2C[-5]:R699993C[-5])),"""")"
Selection.AutoFill Destination:=Range("G2:G12")
Range("G2:G12").Select
End Sub
אבל אז, אם אני מוחק את הנתונים מעמודה G ומנסה להריץ אותה שוב, מתקבלת הודעת השגיאה הכתובה למעלה..
מצורף הגיליון לדוגמא עם הנתונים עליהם הרצתי את הקלטת המאקרו
אשמח אם מישהו יוכל להסביר לי מה הבעיה (ואיך פותרים אותה), בינתיים השיטה (הלא מאוד חכמה אבל בשביל התחלה זה נראה לי בסדר) של הקלטה, ניסיון הבנת הנוסחא ואז יישום שלה אצלי דווקא עבד טוב, אבל הפעם קיבלתי הקלטת קטע קוד שאני אפילו לא מצליח כ"כ להבין
תודה מראש