-
@OdedDvir תודה.
את הקובץ הזה אני מקבל במייל מ"קשר-קהילות"-דוח ציונים.csv
לאחמ"כ אני (מתכנן) מעתיק אותו למסד נתונים, יחד עם עוד מקורות נתונים, ומחיל את ההגרלה.
אני רוצה
להעתיק כל שורה עם פרטי התלמיד.
לגיליון חדש שלא ידרוס את שאר הנתונים.
כפול מספר הפעמים של תשובה נכונה.
לאחמ"כ חוזר לגיליון ומעתיק את התלמיד הבא על זה הדרך .
עריכה@OdedDvir אמר בשאלה| לולאה לפי Case, לשיכפול שורות:
- הבנתי! תודה.
- שמתי לב, והתעצלתי לחץ_לחצן1 ( משהו כזה זה במקור ,מעניין למה)
- מצורף קובץ לדוגמא.
-
@OdedDvir אמר בשאלה| לולאה לפי Case, לשיכפול שורות:
@צבי-10 ברוך הבא לעולם ה-VBA. אני לא יודע מדוע @chv הצביע נגד, אולי העצות הבאות יעזרו לך לקבל מענה הולם:
- קודם כל אין צורך בכלל ב-CASE. כדי לקבל את מספר הכרטיסים, פשוט תחלק את הציון ב-17 לתוך משתנה מסוג Integer. התוצאה תהיה השלם בלי השארית.
- תשתמש בטקסט באנגלית כשאתה מעלה קוד, כי העברית מוצגת בצורה משובשת, וגם בהזחה של הקוד כראוי.
- המטרה הסופית שלך לא ברורה, מה המבנה של הקובץ? צרף דוגמא של הקלט ושל הפלט הרצוי.
בהצלחה
כמובן בגלל צורת השאלה- התוכן, ההגשה..
אולי הייתי מגעיל מידיי? לא נראה לי -
@chv בהחלט קשוח מידי. ההודעה לגיטימית לגמרי, קרב בימין ודחה בשמאל. לא כולם סופרים מוכשרים בעלי כושר ביטוי של משוררים כמוך...
@צבי-10 לפי הודעותיך אתה מתאים לא רע לתכנות (אפילו קצת מידי, אנחנו לא מחשבים ), רק שיש בשאלה עירוב של איך "לוגי" עם איך "אקסלי", ואי בהירות מה מהם ידוע ועד כמה.
אני דוקא הבנתי את השאלה, רק לא היה ברור מאיפה נלקח הקלט (ציון לכל תלמיד, וזה הובהר בהודעה השניה בקובץ המצורף) ולאיפה ייכתב הפלט (אולי בגיליון שני?) אני לא עניתי כי אני לא ממש יודע טוב איך קוראים וכותבים תאים באקסל (הייתי עצלן לרדת לעניין כעת). -
לא התאפקתי ועשיתי קוד שאני לא יודע כמה הוא עובר קהילת הVBA
Public Sub GenerateCartiseyHagrala() Dim cell, outputCell As Range Set cell = Range("B2") Set outputCell = Worksheets(2).Cells(1, 1) Dim times As Integer Do Until IsEmpty(cell) times = cell.Offset(0, 4).Value / 17 For i = 1 To times outputCell.Value = cell.Value Set outputCell = outputCell.Offset(1, 0) Next Set cell = cell.Offset(1, 0) Loop End Sub
אגב אני בחיים לא הייתי שם לב שזה קפיצות של 17, שאפו ל@OdedDvir.
ואם כבר @OdedDvir תסביר לי למה כל אלו שכותבים בVBA כולל ההדרכות הרשמיות משתמשים עם Activate וSelect וActiveCell בלולאות במקום איך שכתבתי?
זה נראה לי הרבה יותר אלגנטי איך שאני עושה! -
@dovid אמר בשאלה| לולאה לפי Case, לשיכפול שורות:
לא התאפקתי ועשיתי קוד
זה סימן מובהק של התמכרות...
שאני לא יודע כמה הוא עובר קהילת הVBA
רק הערה קטנה, שבמקרה המסוים הזה הקוד יתקע כי גליון 2 לא קיים בפתיחת CSV. צריך ליצור אותו קודם, על ידי השינוי הבא:
Worksheets.Add.Name = "names" Set outputCell = Worksheets("names").Cells(1, 1)
אגב אני בחיים לא הייתי שם לב שזה קפיצות של 17, שאפו ל@OdedDvir.
המחמאה לא מגיעה לי, זה כתוב בפירוש בשאלה:
17%=כרטיס 1.
ואם כבר @OdedDvir תסביר לי למה כל אלו שכותבים בVBA כולל ההדרכות הרשמיות משתמשים עם Activate וSelect וActiveCell בלולאות במקום איך שכתבתי?
זה נראה לי הרבה יותר אלגנטי איך שאני עושה!גם לי...אני לא יכול לדבר בשמם, אבל גם לי זה אכן נראה מיותר.
-
@chv שמחתי לקרוא את התשובות לא כתבתי שאלה בפורום כדי להיפגע, זה בסדר. אני מהמקום שלכם, רק מלראות איך הקוד הזה כתוב, הייתי... עד כאן הקדמה.
טעות של ספק-מתחיל, לדבר בשפת קודים, לקצר ככל הניתן, שה"מתכנתים המומחים" יבינו מהר.@dovid אמר בשאלה| לולאה לפי Case, לשיכפול שורות:
@צבי-10 לפי הודעותיך אתה מתאים לא רע לתכנות (אפילו קצת מידי, אנחנו לא מחשבים
(לא הבנתי מה כתוב בסוגריים.) אשמח לשמוע שאני לא מבין בתכנות. כולם ירויחו מזה. המתכנתים כסף, ואני לא אצטרך לשאול בפורום...
משתמשים עם Activate וSelect וActiveCell בלולאות במקום איך שכתבתי?
ראיתי באיזה מקום, שכשמשתמשים הרבה בהנ"ל זה מאט את הקוד.
אני עובר כעת על הקוד האלגנטי, תודה רבה! -
@chv אני לא חושב שאתה צריך להתנצל עד כדי כך. הכל בסדר. ואשרינו שה"בין-אדם-לחבירו" כאן ברמה גבוהה,
כן סיקרן (בלשון עבר) אותי מה הביקורת שלך לפוסט.
טוב שיש אנשים כמוך מביני עניין, שכשמישהו מדבר לא-לעניין, מעקמים ת'אף.
זה חלק מכללי הפורום לא להספים, טוב ששומרים פה על רמה גבוהה - (ע"ע "חזון ומטרה", / ב. נושאים והודעות, סעיף 6א.)
כי רק כך, הפורום ישאר בחלק המקצועי הטוב ביותר - לטובת כולנו. -
@צבי-10 אמר בשאלה| לולאה לפי Case, לשיכפול שורות:
כן סיקרן (בלשון עבר) אותי מה הביקורת שלך לפוסט.
אני חושב שמה שהציק לי היה, שכתבת בצורה לא ברורה בכלל, זרקת קוד (מרגיש כמו 'תכתבו לי את הקוד שאני צריך כדי להשלים את העבודה/שיעורי בית') ונעלמת.
לא יודע.שוב סליחה...
בהצלחה -
@dovid אמר בשאלה| לולאה לפי Case, לשיכפול שורות:
למה כל אלו שכותבים בVBA כולל ההדרכות הרשמיות משתמשים עם Activate וSelect וActiveCell בלולאות במקום איך שכתבתי?
זה נראה לי הרבה יותר אלגנטי איך שאני עושה!נראה לי פשוט - המשתמשים המתחילים בVBA מכירים את השפה בעיקר מתוך הקלטת המאקרו באקסל וורד, ואח"כ התחילו ללמוד את הקוד יותר כדי להרחיב...
באמת ראיתי באתר תותח אקסל (ועוד) שכותב ע"ז שזה עולה יותר מבחינת חישוב כי צריך לבצע פעולות נוספות של בחירה ומעבר פיזי על פני אקסל. -
-
-