דילוג לתוכן

אקסל

385 נושאים 3.2k פוסטים

קטגוריות משנה


  • 11 נושאים
    65 פוסטים
    פ
    אז המאקרו הפשוט ביותר זה הקלטת מאקרו שראינו במדריך הקודם היתרונות של זה זה שזה לא דורש ידע רחב פשוט מקליטים ומסיימים החסרון בזה זה שזה דורש יצירה ממש של מה שאנחנו רוצים להקליט ולא רק פקודה עכשיו נלמד על דרך הרבה יותר קלה שבאמת תחסוך לכם זמן וכוח מבוא לVisual Basic ויז'ואל בייסק זה בעצם המקום שבמקום לכתוב בעצמכם את האוטומציה אתם פשוט נותנים לאוטומציה לעשות את עצמה כלומר: אני לא צריך לעשות בעצמי את האוטומציה אלא פשוט להזין את הקוד של הפעולה שלה הרי גם בהקלטת אוטמציה המחשב למעשה מתרגם את זה לקודים אז למה שבמקום לכתוב ואז המחשב מתרגם לקוד ואז מבצע פשוט נכתוב למחשב מראש את הקוד? לזה נולד הרעיון של Visual Basic-לכתוב ישר את הקוד בלי הקדמות אז ישר לעניין! הכרת Visual Basic וכליו [image: 1769291620543-9a2e3974-1ec4-4407-bd1c-2ddb0dea638d-image.png] זה ויז'ואל בייסיק נכנס אליו יפתח מסך כזה [image: 1769291672078-ab20851f-fc1c-4353-90d1-452fe535f488-image.png] יש לנו שם הרבה אופציות אבל אנחנו נתמקד בפקודות עצמם ותבנית המאקרו כתיבת והרצת קוד מאקרו נלך לפינה הימנית העליונה לInsert ונבחר בModule [image: 1769291721548-ae9f2aac-3550-4136-b5ce-71e7879278f5-image.png] יפתח לנו מסך כזה [image: 1769291741193-3e0316e1-5c3e-4492-84bf-ea1d4db6bf1f-image.png] זה בעצם הממשק של כתיבת הקוד שלנו כללי יסוד: כל מאקרו מתחיל בSub ולאחריו השם שאנחנו בוחרים לו ולסיום End Sub לדוגמא Sub MyFirstCode() End Sub ורוב המאקרו בנויים בסדר הזה מיקום-פעולה-ערך נקח לדוגמא מאקרו כזה Sub MyFirstCode() בחרנו שם , עכשיו לפקודה Range("A1").Value = "אוטומציה זה החיים" Range("A1").Interior.Color = vbYellow MsgBox "הפעולה הושלמה בהצלחה!" End Sub מה כתוב כאן? קודם כל בחרנו מיקום Range("A1") – אמרנו לאקסל לגשת לתא A1. אח"כ בחרנו פעולה = "אוטומציה זה החיים" ואח"כ שינינו את הערך של התא .Value – אמרנו לו לשנות את הערך (התוכן) שלו. .Interior.Color – אמרנו לו לגשת לצבע הפנימי שלו ולשנות אותו לצהוב (vbYellow). MsgBox – הקפצנו הודעה למסך בסיום. "הפעולה הושלמה בהצלחה" כך זה אמור להראות בממשק הקוד [image: 1769292419284-16640819-9200-4696-8e17-8aae71ba3428-image.png] נריץ את המאקרו בלחיצה על החץ למעלה [image: 1769292452492-6daeb8b4-f1c0-4a7b-b943-d9429ff89774-image.png] יפתח לנו מסך כזה [image: 1769292478552-c1971bb2-26c0-42fc-9f2c-3c1ff1af3dab-image.png] נלחץ על "RUN" וקיבלנו את התוצאה הזאת [image: 1769292551597-d8de57bc-1f02-423a-bce2-3cdda827ba44-image.png] כמובן שעכשיו אנחנו יכולים לקחת את הפקודה הזאת ולשפר אותה ולהוסיף את התוכן הערך והמיקום מכאן השמיים הם הגבול אבל זה המבנה הבסיסי של הפקודה אם אתם רוצים פקודה מסוימת לביצוע טקסט בצבע כזה או אחר ואתם לא יכולים לכתוב בעצמכם אתם יכולים לפנות לAI החביב עליכם שיפתור לכם את הבעיה ביתר קלות בל"נ אם יהיה עוד מדריך נדבר על לולאות וכו'
  • 332 נושאים
    3k פוסטים
    פ
    לולאה בתוך לולאה אז במדריך הקודם ראינו איך משלבים לולאה מתמשכת בתוך הלולאה (תנאי If), שידע לעשות דברים שונים לפי המיקום. אבל מה נעשה אם נרצה למלא לא רק עמודה אחת כלפי מטה, אלא שטח שלם? כמו טבלה? כלומר: אנחנו רוצים למלא את לוח הכפל, או למלא נתונים לרוחב ולא רק בתא A אז בעז"ה נראה היום איך עושים "לולאה בתוך לולאה" (לולאה כפולה). אז יש לנו את הפקודה הזאת: Sub LoopInsideLoop() Dim i As Integer Dim j As Integer For i = 1 To 5 For j = 1 To 4 Cells(i, j).Value = "שורה " & i & " כיסא " & j Next j Next i End Sub [image: 1769521904144-da08680c-1061-462e-a217-9f3ae8de7fd4-image.png] הקטע הראשון והאחרון – מוכרים מהמדריכים הקודמים ככלי יסוד לכל מאקרו. אחרי זה יש לנו: Dim i As Integer Dim j As Integer כלומר: משתנים של הלולאה וכאן אנחנו צריכים שני משתנים אחד יספור את השורות ( i) ואחד יספור את העמודות (j) והנקודה החשובה בקוד זה הקטע הזה For i = 1 To 5 For j = 1 To 5 כאן קורה הלולאה השנייה אנחנו אומרים למחשב: תתפוס את שורה מספר 1 (i=1) ואל תעבור לשורה הבאה אלא תריץ לולאה חדשה שתספור מ-1 עד 5 לרוחב (j) כלומר: בכל התאים בשורה 1 בתוך הלולאה אנחנו כותבים: Cells(i, j).Value = "שורה " & i & " כיסא " & j כלומר: בתא שנמצא בשורה i ובעמודה j, תכניס את התוצאה של ההכפלה ביניהם. מה שקורה בפועל זה: המחשב עומד על שורה 1, ורץ: עמודה 1, עמודה 2, עמודה 3... עד 5. רק אחרי שהוא סיים את ה-Next j (סיים את השורה לרוחב), הוא מגיע ל- Next i כלומר: עכשיו תרד לשורה מספר 2, ותתחיל את כל הסיבוב של העמודות מהתחלה. למעשה בשתי מילים הלולאה החיצונית (i) מחזיקה את השורה, והלולאה הפנימית (j) וממלאת את התאים באותה שורה, עד שעוברים לשורה הבאה כמובן שאין צורך להסביר למה זה מנפק"מ מספיק התמונה הבאה [image: 1769521835081-19cb436e-3553-4247-b346-419359865ec4-image.png] כמו שאנחנו רואים זה ממלא לנו את כל הטבלה לארוך ולרוחב עם מספור אוטמטי! בהצלחה!
  • הדרכה ועזרה לשפה המתה VBA

    42 451
    42 נושאים
    451 פוסטים
    א
    @יעקב-ש Sub ImportCommentsToTable() Dim wsSource As Worksheet Dim wsDest As Worksheet Dim cmt As Comment Dim rng As Range Dim lastRow As Long Dim destRow As Long Set wsSource = ActiveSheet ' צור גיליון חדש לתוצאות Set wsDest = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) wsDest.Name = "הערות מיובאות" ' כותרות לטבלה wsDest.Range("A1").Value = "מיקום תא" wsDest.Range("B1").Value = "תוכן תא" wsDest.Range("C1").Value = "תוכן הערה" destRow = 2 ' שורה להתחלת הדאטה ' עבור כל התא עם הערה בגיליון המקורי For Each cmt In wsSource.Comments wsDest.Cells(destRow, 1).Value = cmt.Parent.Address(False, False) ' מיקום התא wsDest.Cells(destRow, 2).Value = cmt.Parent.Value ' תוכן התא wsDest.Cells(destRow, 3).Value = cmt.Text ' תוכן ההערה destRow = destRow + 1 Next cmt ' עצב טבלה lastRow = wsDest.Cells(wsDest.Rows.Count, "A").End(xlUp).Row wsDest.Range("A1:C" & lastRow).Select wsDest.ListObjects.Add(xlSrcRange, Selection, , xlYes).Name = "CommentsTable" wsDest.ListObjects("CommentsTable").TableStyle = "TableStyleMedium9" MsgBox "ייבוא ההערות הסתיים. נמצאו " & destRow - 2 & " הערות.", vbInformation End Sub מרובי בוט