דילוג לתוכן
  • חוקי הפורום
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
לוגו מותג
  1. דף הבית
  2. תוכנות
  3. יישומי אופיס
  4. אקסל
  5. VBA - excel
  6. עזרה הדדית - VBA excel
  7. באג | איך למנוע LOOP אין סופי בVBA

באג | איך למנוע LOOP אין סופי בVBA

מתוזמן נעוץ נעול הועבר עזרה הדדית - VBA excel
5 פוסטים 2 כותבים 111 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • menajemmendelM מנותק
    menajemmendelM מנותק
    menajemmendel
    כתב ב נערך לאחרונה על ידי
    #1

    כשעושים מאקרו לדוגמא שמחפש סגנון בכל המסמך ועושה בו פעולה, ואז מחפש את הקבע הבא וכו' עד שעובר על כל המסמך,
    איך עושה שלא יהיה לופ אין סופי,
    לדוגמא בזה:

    Do
    Selection.Find.ClearFormatting
        With Selection.Find
            .Text = ""
            .Style = singnon_actual
            .Forward = True
            .Format = True
            .Wrap = wdFindStop
        End With
        Selection.Find.Execute
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    'בוחר מילה ראשונה ומחיל עליה סגנון
    Selection.MoveEndUntil Cset:=" ", Count:=wdForward
    Selection.Style = ActiveDocument.Styles(nombre_del_Nuevo_Estilo)
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    Loop Until Selection.Find.Found = False
    

    לא עוזר לי שאני כותב בחיפוש
    .Wrap = wdFindStop
    כי אם בסוף המסמך יש גם אותו סגנון נתקע שם לעולם

    איך הדרך הכי מקצועית למנוע מצב זה?

    menajemmendelM תגובה 1 תגובה אחרונה
    0
    • menajemmendelM menajemmendel

      כשעושים מאקרו לדוגמא שמחפש סגנון בכל המסמך ועושה בו פעולה, ואז מחפש את הקבע הבא וכו' עד שעובר על כל המסמך,
      איך עושה שלא יהיה לופ אין סופי,
      לדוגמא בזה:

      Do
      Selection.Find.ClearFormatting
          With Selection.Find
              .Text = ""
              .Style = singnon_actual
              .Forward = True
              .Format = True
              .Wrap = wdFindStop
          End With
          Selection.Find.Execute
      Selection.MoveLeft Unit:=wdCharacter, Count:=1
      'בוחר מילה ראשונה ומחיל עליה סגנון
      Selection.MoveEndUntil Cset:=" ", Count:=wdForward
      Selection.Style = ActiveDocument.Styles(nombre_del_Nuevo_Estilo)
      Selection.MoveDown Unit:=wdParagraph, Count:=1
      Loop Until Selection.Find.Found = False
      

      לא עוזר לי שאני כותב בחיפוש
      .Wrap = wdFindStop
      כי אם בסוף המסמך יש גם אותו סגנון נתקע שם לעולם

      איך הדרך הכי מקצועית למנוע מצב זה?

      menajemmendelM מנותק
      menajemmendelM מנותק
      menajemmendel
      כתב ב נערך לאחרונה על ידי
      #2

      זהו? אין תשובות לאף אחד?

      ה תגובה 1 תגובה אחרונה
      0
      • menajemmendelM menajemmendel

        זהו? אין תשובות לאף אחד?

        ה מנותק
        ה מנותק
        הדובדבן שבקצפת
        כתב ב נערך לאחרונה על ידי
        #3

        @menajemmendel
        דבר ראשון אף לא חייב לך כלום אז נא להרגיע
        תבקש בצורה יפה יותר

        ובנוגע לשאלה שלך
        תכתוב ככה

        Do
            Selection.Find.ClearFormatting
            With Selection.Find
                .Text = ""
                .Style = singnon_actual
                .Forward = True
                .Format = True
                .Wrap = wdFindStop
            End With
            Selection.Find.Execute
            If Selection.EndOf(wdStory) Then
                Exit Do ' Exit the loop if the end of the document is reached
            End If
            Selection.MoveLeft Unit:=wdCharacter, Count:=1
            'Selects a first word and applies a style to it
            Selection.MoveEndUntil Cset:=" ", Count:=wdForward
            Selection.Style = ActiveDocument.Styles(nombre_del_Nuevo_Estilo)
            Selection.MoveDown Unit:=wdParagraph, Count:=1
        Loop Until Selection.Find.Found = False
        

        בקוד זה, ההצהרה "If Selection.EndOf(wdStory) Then" בודקת אם הבחירה הגיעה לסוף המסמך, ואם כן, היא יוצאת מהלולאה באמצעות המשפט "Exit Do"

        menajemmendelM תגובה 1 תגובה אחרונה
        3
        • ה הדובדבן שבקצפת

          @menajemmendel
          דבר ראשון אף לא חייב לך כלום אז נא להרגיע
          תבקש בצורה יפה יותר

          ובנוגע לשאלה שלך
          תכתוב ככה

          Do
              Selection.Find.ClearFormatting
              With Selection.Find
                  .Text = ""
                  .Style = singnon_actual
                  .Forward = True
                  .Format = True
                  .Wrap = wdFindStop
              End With
              Selection.Find.Execute
              If Selection.EndOf(wdStory) Then
                  Exit Do ' Exit the loop if the end of the document is reached
              End If
              Selection.MoveLeft Unit:=wdCharacter, Count:=1
              'Selects a first word and applies a style to it
              Selection.MoveEndUntil Cset:=" ", Count:=wdForward
              Selection.Style = ActiveDocument.Styles(nombre_del_Nuevo_Estilo)
              Selection.MoveDown Unit:=wdParagraph, Count:=1
          Loop Until Selection.Find.Found = False
          

          בקוד זה, ההצהרה "If Selection.EndOf(wdStory) Then" בודקת אם הבחירה הגיעה לסוף המסמך, ואם כן, היא יוצאת מהלולאה באמצעות המשפט "Exit Do"

          menajemmendelM מנותק
          menajemmendelM מנותק
          menajemmendel
          כתב ב נערך לאחרונה על ידי
          #4

          @הדובדבן-שבקצפת תודה רבה לכל העונים, אבל לא עובד, באופן שאתה כתבת עושה את הלולאה רק פעם אחת למרות שנשאר עוד מלא דפים עד הסוף

          ה תגובה 1 תגובה אחרונה
          0
          • menajemmendelM menajemmendel

            @הדובדבן-שבקצפת תודה רבה לכל העונים, אבל לא עובד, באופן שאתה כתבת עושה את הלולאה רק פעם אחת למרות שנשאר עוד מלא דפים עד הסוף

            ה מנותק
            ה מנותק
            הדובדבן שבקצפת
            כתב ב נערך לאחרונה על ידי
            #5

            @menajemmendel
            אז תעשה ככה

            Do While Selection.Find.Execute
                If Selection.Range.End < ActiveDocument.Range.End Then
                    Selection.MoveLeft Unit:=wdCharacter, Count:=1
                    'Selects a first word and applies a style to it
                    Selection.MoveEndUntil Cset:=" ", Count:=wdForward
                    Selection.Style = ActiveDocument.Styles(nombre_del_Nuevo_Estilo)
                    Selection.MoveDown Unit:=wdParagraph, Count:=1
                Else
                    Exit Do
                End If
            Loop
            

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

            Do While Selection.Find.Execute
                If ActiveDocument.Range.End - Selection.Range.End > 10 Then
                    Selection.MoveLeft Unit:=wdCharacter, Count:=1
                    'Selects a first word and applies a style to it
                    Selection.MoveEndUntil Cset:=" ", Count:=wdForward
                    Selection.Style = ActiveDocument.Styles(nombre_del_Nuevo_Estilo)
                    Selection.MoveDown Unit:=wdParagraph, Count:=1
                Else
                    Exit Do
                End If
            Loop
            

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

            תגובה 1 תגובה אחרונה
            1

            • התחברות

            • אין לך חשבון עדיין? הרשמה

            • התחברו או הירשמו כדי לחפש.
            • פוסט ראשון
              פוסט אחרון
            0
            • חוקי הפורום
            • לא נפתר
            • משתמשים
            • חיפוש גוגל בפורום
            • צור קשר