בדיקה שגליון DD קיים, במידה וכן יבצע את המשך הקוד מאקרו

kremer21

New member
בדיקה שגליון DD קיים, במידה וכן יבצע את המשך הקוד מאקרו

שלום לכולם,
מערכת: windos 7 אופיס 2010
1.באופן קבוע מכניס גליון לקובץ בשם "DD"
2.יוצור קוד מאקרו שפועל על הגליון חדש בשם DD אבל אם שכחתי להכניס את הגליון , ארצה לקבל הודעה , שלא הוכנס הגליון DD.
3.מצורף קוד שניסיתי לכתוב בעזרת אתרים וספרים.
לא השתמשתי כנראה בלולאה בכדי שיתבצע בדיקה ואם לא מתקיים הכלל (הגליון DD אינו קיים בקובץ ,יצא ולא ימשיך בקוד, אחרת כן יתבצע הקוד, כניסה לגליון DD והמשך ביצוע מה שכתוב בקוד.
אשמח להסבר. תודה

 

u333

New member
תשובה בשני שלבים:

  1. תוכחה: כמה זמן אתה משוטט בפורום כדי לדעת שיש לצרף קובץ - לא תמונה ולא סיפורים.
  2. ולשאלתך - אם הבנתי נכון - שאינך רוצה הוספה אוטומטית של גיליון DD אם הוא אינו קיים אלא רק התראה - נסה את הקוד הבא.
מכאן ועד הוספה אוטומטית של הגיליון - הדרך קצרה...
קוד:
Sub addsheets()
sc = Sheets.Count
    For nc = 1 To sc
        If Sheets(nc).Name Like "DD" Then flg = True: Exit For
    Next
        If flg = True Then
            Sheets("DD").Select
            Range("A1").Formula = "3333"
        Else
            MsgBox "Sheet DD Does not Exist. Please Insert"
        End If
End Sub
 

kremer21

New member
תודה ירושלים:)

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

u333

New member
חבל שלא תפסת את הפואנטה של צירוף קובץ.....

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

kremer21

New member
בבקשה

אשמח מעט לקבל את הסבר על הקוד שכתבת, הצלחתי לשרבט אותו פנימה והבינה את הלוגיקה באופן כללי
 

kremer21

New member
החלק הנ"ל- אשמח להסבר

קוד:
sc = Sheets.Count
    For nc = 1 To sc
        If Sheets(nc).Name Like "DD" Then flg = True: Exit For
 

u333

New member
זוהי אחת השיטות (אולי לא הקצרה ביותר) לבדיקת קיום גיליון לפי

שם הגיליון.
  • שורה ראשונה - משתנה sc מקבל את מספר הגיליונות הכולל בקובץ.
  • שורה שניה - התחלת לולאה ע"פ כל הגיליונות - ממספר 1 עד האחרון (sc) -
  • שורה שלישית - אם שם הגיליון הנבדק בלולאה הוא "DD" אז משתנה flg מקבל את הערך TRUE וריצת הלולאה נפסקת. (אח"כ משתמשים בערך המשתנה להפקת ההודעה על אי קיום הגיליון)
וכמובן יש לציין כי השיטה של מיכאל קצרה יותר.
 

מיכאל אבידן

Member
מנהל
גם לי יש בעיה בהבנת הקוד שהוצע . . .


&nbsp
1. מה "מחפש" שם האופרטור: LIKE

&nbsp
2. להזכירך (נשכחות) שדי להציב: ...If flg Then
&nbsp
 

u333

New member
סליחה אבל קשה לי קצת להבין מה אתה רוצה ?

  1. מה המשפט הזה אמור להביע ? "הצלחתי לשרבט אותו פנימה והבינה את הלוגיקה באופן כללי"
  2. מה המקרו בקובץ שלך אמור לעשות ? מה זה הסינון הזה בסוף ?
  3. ממבט ראשון אתה מקבל שגיאה כי מנסה לתת את אותו השם ל-2 גיליונות שונים שהוספת - וזה אסור !
 

מיכאל אבידן

Member
מנהל
המנהל (לא ראיתי כאן מנהלים) נוהג עפ"י הלכות רבי בן זומא.


שטען: "מה שמותר לרבי אסור לחסידים".

כבר אמרו לפני שאף אחד, כאן, לא חייב כלום לאף אחד.

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

מעבר לכך - כשתקליד, בעצמך, נוסחה - שהוצגה בתמונה - סביר להניח שגם תלמד ותחוש אותה ואת מקטעיה.

ברשותך, לא אתייחס למשפט: "חשבתי שזאת דרך נוספת ומקלה," מסיבות מובנות (אני מקווה שגם לך).
 

kremer21

New member
מסכים

התשובה שקבלתי בקוד, עשיתי העתק הדבק מחקתי וסדרתי...על איזה הקלדה חשבת?
&nbsp
לא הקלדתי, משום שקבלתי את התשובה לא כתמונה.
ואני מסכים איתך אם הקליד אלמד, קבלתי כמה Error ועפ,י הניסוי והטעיה ( חלק הקלדתי) למדתי, אני משתמש בעוד מלא פרומים חלקם לועזיים.
ותודה גם לך , חג שמח
 

מיכאל אבידן

Member
מנהל
אני לא מדבר על מה שקיבלת מאחרים . . .


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

kremer21

New member
תודה ירושלים:)

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

מיכאל אבידן

Member
מנהל
עוד פעם Select
(ושלא תעז להאשים אותו...) . . .


בנוסף, אין צורך בלולאה כדי לוודא את קיומו של גיליון מסוים.

קוד:
Sub SheetExistanceCheck()
      On Error Resume Next
      SH = ActiveWorkbook.Sheets("DD")
      If Err.Number = 9 Then
         MsgBox "Sheet DD Does not exist !"
      Else
         Sheets("DD").[A1] = "3333"
      End If
End Sub
 

kremer21

New member
יפה מאוד, מהיכן ידעת Error = 9 ?

אם תרצה להסביר ,
קוד:
  On Error Resume Next
      SH = ActiveWorkbook.Sheets("DD")
אשמח להסבר לשתי שורות הראשונות.
 

מיכאל אבידן

Member
מנהל
את זה לומדים 'בשעות הלבנות של הלילה' . . .


הקלד גרש בודד לפני הפקודה: ...On Error.

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

מאחר ואינני מעוניין שהמקרו יעצור - הוספתי את ההכרזה: ...On Error

כעת גם אתה
יודע מהו מספר השגיאה (9) ובמקטע ה-IF אני בודק את קיומה של שגיאה מס' 9 ופועל בהתאם.

פשוט - הא
 
למעלה