שאלה | עיצוב הערות שוליים | עזרה דחופה
-
@shishko
כאשר עובדים עם מאקרו ואתה סתם עושה חיפוש והחלפה איבדת את כל הכח של מאקרו במאקרו יש קודים כמעט לכל דבר כולל טיפול בהערות שוליים@pcinfogmach כתב בשאלה | עיצוב הערות שוליים | עזרה דחופה:
במאקרו יש קודים כמעט לכל דבר כולל טיפול בהערות שוליים
כמובן כמו בפקודה הקודמת
רק הבאתי לטובת אלו שיתקלו באותה בעיה ולא יוכלו לקרוא את כל הפוסט -
@shishko כתב בשאלה | עיצוב הערות שוליים | עזרה דחופה:
אולי באמת מישהו יודע איך עושים שירוץ עד סוף המסמך או לפחות פקודה שתריץ את זה מספר פעמים ולא יצריך להעתיק את פקודת ההרצה כמה פעמים
כדי שפקודה ירוץ מספר פעמים צריך להכניס אותה בתוך 'לולאה'' LOOP באנגלית, יש כמה סוגי לולאות, יש לולאות לפי מספר פעמים (for) ויש לפי מספר אובייקטים (for each), ויש כל זמן שמתקיים תנאי מסויים (do while)
אני אכתוב הכי פשוט זה מספר פעמים בדוגמא שלנו 500 פעםfor i = 1 to 500 כאן אתה כותב את הקוד שלך next i
@menajemmendel איך עושים לולאה עד סוף המסמך
-
@menajemmendel איך עושים לולאה עד סוף המסמך
-
@shishko
כאשר עושים לולאה צריך לעשות לולאה ביחס למשהו לדוגמא לפי מספר פסקאות.@pcinfogmach א"א לעשות עד שהחיפוש לא מוצא עוד אחד
מה שקורה עכשיו שהוא ממשיך בלי לעשות את החיפוש אני רוצה שיעצור לגמרי -
@pcinfogmach א"א לעשות עד שהחיפוש לא מוצא עוד אחד
מה שקורה עכשיו שהוא ממשיך בלי לעשות את החיפוש אני רוצה שיעצור לגמרי -
@shishko
מה בדיוק הקוד שלך
do while found או משהו אחר@pcinfogmach קוד שמחפש תו מסויים בוחר עד סוף השורה ופועל על זה השאלה איך עושים שהוא יחזור על הלולאה ובפעם שהוא לא מוצא את זה הוא יעצור את כל פעולת המאקרו
-
@pcinfogmach קוד שמחפש תו מסויים בוחר עד סוף השורה ופועל על זה השאלה איך עושים שהוא יחזור על הלולאה ובפעם שהוא לא מוצא את זה הוא יעצור את כל פעולת המאקרו
-
@shishko
do while found
או if not found@pcinfogmach לא בטוח שהבנתי מה אתה מתכוון נראה לי הראשון
-
@pcinfogmach לא בטוח שהבנתי מה אתה מתכוון נראה לי הראשון
אתה יוצא פעולת with find ובתוך ה- with אתה עושה תנאי עם ה-found או צנאי של לולאת while או פעולת if עם goto start
הנה דוגמא עם פעולת if (שהיא יותר בטוחה מן השנים) מתוך תוסף עיצוב ספרי קודש
Private Sub המרה_מספרים_לאותיות_בלשון_נקיה() Dim rng, oRange As range Set rng = Selection.range Set oRange = Selection.range With rng .End = .start .Select End With start: With Selection.Find .ClearFormatting .Execute FindText:="[0-9]{1,}", MatchWildcards:=True, Format:=False, Wrap:=wdFindContinue If Not Selection.range.InRange(oRange) Then GoTo ext If .Found = True Then mystring = "" MyArray = Array(400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1) MyaArray = Array("ת", "ש", "ר", "ק", "צ", "פ", "ע", "ס", "נ", "מ", "ל", "כ", _ "י", "ט", "ח", "ז", "ו", "ה", "ד", "ג", "ב", "א") v = Val(Selection) Do While v > 0 If v = 15 Or v = 16 Then mystring = mystring & "ט" v = v - 9 End If For i = 0 To UBound(MyArray) If v >= MyArray(i) Then mystring = mystring & MyaArray(i) v = v - MyArray(i) Exit For End If Next i Loop If mystring = "רצח" Then mystring = "רחצ" If mystring = "רע" Then mystring = "ער" If mystring = "רעב" Then mystring = "ערב" If mystring = "שד" Then mystring = "דש" If mystring = "שמד" Then mystring = "שדמ" If mystring = "תשמד" Then mystring = "תדשם" If mystring = "רעה" Then mystring = "ערה" If mystring = "רעד" Then mystring = "עדר" If Len(mystring) = 1 Then mystring = mystring & "'" Else ' myString = Left(myString, Len(myString) - 1) & Chr(34) & Right(myString, 1) mystring = Left(mystring, (Len(mystring) - 1)) & Chr(34) & Right(mystring, 1) End If Selection = mystring GoTo start End If End With ext: rng.Select End Sub
-
אתה יוצא פעולת with find ובתוך ה- with אתה עושה תנאי עם ה-found או צנאי של לולאת while או פעולת if עם goto start
הנה דוגמא עם פעולת if (שהיא יותר בטוחה מן השנים) מתוך תוסף עיצוב ספרי קודש
Private Sub המרה_מספרים_לאותיות_בלשון_נקיה() Dim rng, oRange As range Set rng = Selection.range Set oRange = Selection.range With rng .End = .start .Select End With start: With Selection.Find .ClearFormatting .Execute FindText:="[0-9]{1,}", MatchWildcards:=True, Format:=False, Wrap:=wdFindContinue If Not Selection.range.InRange(oRange) Then GoTo ext If .Found = True Then mystring = "" MyArray = Array(400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1) MyaArray = Array("ת", "ש", "ר", "ק", "צ", "פ", "ע", "ס", "נ", "מ", "ל", "כ", _ "י", "ט", "ח", "ז", "ו", "ה", "ד", "ג", "ב", "א") v = Val(Selection) Do While v > 0 If v = 15 Or v = 16 Then mystring = mystring & "ט" v = v - 9 End If For i = 0 To UBound(MyArray) If v >= MyArray(i) Then mystring = mystring & MyaArray(i) v = v - MyArray(i) Exit For End If Next i Loop If mystring = "רצח" Then mystring = "רחצ" If mystring = "רע" Then mystring = "ער" If mystring = "רעב" Then mystring = "ערב" If mystring = "שד" Then mystring = "דש" If mystring = "שמד" Then mystring = "שדמ" If mystring = "תשמד" Then mystring = "תדשם" If mystring = "רעה" Then mystring = "ערה" If mystring = "רעד" Then mystring = "עדר" If Len(mystring) = 1 Then mystring = mystring & "'" Else ' myString = Left(myString, Len(myString) - 1) & Chr(34) & Right(myString, 1) mystring = Left(mystring, (Len(mystring) - 1)) & Chr(34) & Right(mystring, 1) End If Selection = mystring GoTo start End If End With ext: rng.Select End Sub
@pcinfogmach כתב בשאלה | עיצוב הערות שוליים | עזרה דחופה:
For i = 0 To UBound(MyArray)
If v >= MyArray(i) Then
mystring = mystring & MyaArray(i)
v = v - MyArray(i)
Exit For
End If
Next iזה?
-
אתה יוצא פעולת with find ובתוך ה- with אתה עושה תנאי עם ה-found או צנאי של לולאת while או פעולת if עם goto start
הנה דוגמא עם פעולת if (שהיא יותר בטוחה מן השנים) מתוך תוסף עיצוב ספרי קודש
Private Sub המרה_מספרים_לאותיות_בלשון_נקיה() Dim rng, oRange As range Set rng = Selection.range Set oRange = Selection.range With rng .End = .start .Select End With start: With Selection.Find .ClearFormatting .Execute FindText:="[0-9]{1,}", MatchWildcards:=True, Format:=False, Wrap:=wdFindContinue If Not Selection.range.InRange(oRange) Then GoTo ext If .Found = True Then mystring = "" MyArray = Array(400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1) MyaArray = Array("ת", "ש", "ר", "ק", "צ", "פ", "ע", "ס", "נ", "מ", "ל", "כ", _ "י", "ט", "ח", "ז", "ו", "ה", "ד", "ג", "ב", "א") v = Val(Selection) Do While v > 0 If v = 15 Or v = 16 Then mystring = mystring & "ט" v = v - 9 End If For i = 0 To UBound(MyArray) If v >= MyArray(i) Then mystring = mystring & MyaArray(i) v = v - MyArray(i) Exit For End If Next i Loop If mystring = "רצח" Then mystring = "רחצ" If mystring = "רע" Then mystring = "ער" If mystring = "רעב" Then mystring = "ערב" If mystring = "שד" Then mystring = "דש" If mystring = "שמד" Then mystring = "שדמ" If mystring = "תשמד" Then mystring = "תדשם" If mystring = "רעה" Then mystring = "ערה" If mystring = "רעד" Then mystring = "עדר" If Len(mystring) = 1 Then mystring = mystring & "'" Else ' myString = Left(myString, Len(myString) - 1) & Chr(34) & Right(myString, 1) mystring = Left(mystring, (Len(mystring) - 1)) & Chr(34) & Right(mystring, 1) End If Selection = mystring GoTo start End If End With ext: rng.Select End Sub
@pcinfogmach כתב בשאלה | עיצוב הערות שוליים | עזרה דחופה:
With Selection.Find
.ClearFormatting
.Execute FindText:="[0-9]{1,}", MatchWildcards:=True, Format:=False, Wrap:=wdFindContinue
If Not Selection.range.InRange(oRange) Then GoTo ext
If .Found = True Thenרק שים לב שבשביל הלולאה צריך להגדיר נקודת goto ואז בסוף כל פעולה לחזור אליה אא"כ התנאי לא התקיים
-
@menajemmendel איך עושים לולאה עד סוף המסמך
@shishko כתב בשאלה | עיצוב הערות שוליים | עזרה דחופה:
@menajemmendel איך עושים לולאה עד סוף המסמך
אני נאבדתי באשכול מה אתה רוצה לעשות, והאם ענו לך כבר, האם יש לך עדיין שאלה?
-
@shishko כתב בשאלה | עיצוב הערות שוליים | עזרה דחופה:
@menajemmendel איך עושים לולאה עד סוף המסמך
אני נאבדתי באשכול מה אתה רוצה לעשות, והאם ענו לך כבר, האם יש לך עדיין שאלה?
@menajemmendel עשיתי כמו שהסברת לי בחפש והחלף והכל הסתדר, תודה רבה.
-
@menajemmendel עשיתי כמו שהסברת לי בחפש והחלף והכל הסתדר, תודה רבה.
@menajemmendel איך עושים לולאה עד סוף המסמך
אני נאבדתי באשכול מה אתה רוצה לעשות, והאם ענו לך כבר, האם יש לך עדיין שאלה?
ישיבישער
השיב לmenajemmendel לפני 7 דקות
@menajemmendel עשיתי כמו שהסברת לי בחפש והחלף והכל הסתדר, תודה רבה.סליחה, התכוונתי לשאול את @shishko
-
@menajemmendel איך עושים לולאה עד סוף המסמך
אני נאבדתי באשכול מה אתה רוצה לעשות, והאם ענו לך כבר, האם יש לך עדיין שאלה?
ישיבישער
השיב לmenajemmendel לפני 7 דקות
@menajemmendel עשיתי כמו שהסברת לי בחפש והחלף והכל הסתדר, תודה רבה.סליחה, התכוונתי לשאול את @shishko
@menajemmendel אם יש לך דרך טובה ופשוטה ללולאה עד סוף המסמך משהו מעין הפקודה של הכפלת הלולאה מספר פעמים אני ישמח
לא הספקתי לבדוק את מה ש@pcinfogmach כתב
תודה רבה -
@menajemmendel אם יש לך דרך טובה ופשוטה ללולאה עד סוף המסמך משהו מעין הפקודה של הכפלת הלולאה מספר פעמים אני ישמח
לא הספקתי לבדוק את מה ש@pcinfogmach כתב
תודה רבה@shishko כתב בשאלה | עיצוב הערות שוליים | עזרה דחופה:
@menajemmendel אם יש לך דרך טובה ופשוטה ללולאה עד סוף המסמך משהו מעין הפקודה של הכפלת הלולאה מספר פעמים אני ישמח
לא הספקתי לבדוק את מה ש@pcinfogmach כתב
תודה רבהדבר זה תלוי מה אתה רוצה לעשות (וזה מה שכתב לך PCINFOGMACH), אין סתם ''לולאה כללית שירוץ על כל המסמך'', כי כפי שאתה יודע (או לא) VBA הוא תוכנה שעובדת מובססת על ''עצמים'', שזה אומר מטפל בכל ''עצם'' (אובייקט) בנפרד, ולולאה לכל המסמך אומר שיטפל בכל האובייקטים מאותו סוג שנמצאים במסמך הנוכחי.
לדוגמא:
אם תרצה לטפל בכל בהערות שוליים של מסמך, אז הלולאה יהיה כזה
תרוץ על כל הערה ותעשה כך וכך
(לדוגמא למחוק כל הערה)For Each ftnt In ActiveDocument.Footnotes ftnt.Delete Next ftnt
אם תרצה לטפל בכל פיסקה (כדוגמא חלון) אז הלולאה יהיה כזה: תרוץ על כל פיסקה במסמך ותעשה כך וכך
For Each piska In ActiveDocument.Paragraphs bla bla bla Next piska
לכן אי אפשר לומר משהו כללי
מקווה שהובנתי, סתם שתדע שלשאלות מהסוג הזה, אתה תמיד יכול לנסות בGPT -
@pcinfogmach קוד שמחפש תו מסויים בוחר עד סוף השורה ופועל על זה השאלה איך עושים שהוא יחזור על הלולאה ובפעם שהוא לא מוצא את זה הוא יעצור את כל פעולת המאקרו
@shishko כתב בשאלה | עיצוב הערות שוליים | עזרה דחופה:
קוד שמחפש תו מסויים בוחר עד סוף השורה ופועל על זה השאלה איך עושים שהוא יחזור על הלולאה ובפעם שהוא לא מוצא את זה הוא יעצור את כל פעולת המאקרו
הקוד שלי כנ"ל
אנסה בצ'אט GPT כשיהיה לי זמן
תודה רבה