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

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. vba | עזרה. לא עובר לגליון הבא

vba | עזרה. לא עובר לגליון הבא

מתוזמן נעוץ נעול הועבר תכנות
6 פוסטים 3 כותבים 195 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • פ מנותק
    פ מנותק
    פלורידה
    כתב ב נערך לאחרונה על ידי פלורידה
    #1

    שמתי את הקוד הזה.

       Sub מאקרו1()
    Dim i As Long
    Application.ScreenUpdating = False
        For i = 1 To Sheets.Count
                Range("b7").Select
                  מאקרו2
                  Selection.ClearContents
                Range("b7").Select
        Next i
        Application.ScreenUpdating = True
    End Sub
    

    הבעיה שהוא עושה את הפעולה לפי מספר הגליונות, אך לא עובר לגליון הבא.
    מה חסר כאן?

    מנחםמ תגובה 1 תגובה אחרונה
    0
    • פ פלורידה

      שמתי את הקוד הזה.

         Sub מאקרו1()
      Dim i As Long
      Application.ScreenUpdating = False
          For i = 1 To Sheets.Count
                  Range("b7").Select
                    מאקרו2
                    Selection.ClearContents
                  Range("b7").Select
          Next i
          Application.ScreenUpdating = True
      End Sub
      

      הבעיה שהוא עושה את הפעולה לפי מספר הגליונות, אך לא עובר לגליון הבא.
      מה חסר כאן?

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

      @פלורידה
      נסה את זה

      Sub מאקרו1()
      
      Dim ws As Worksheet
      Application.ScreenUpdating = False
          
          For Each ws In ThisWorkbook.Sheets
               With ws
                  .Range("b7").Select
                  מאקרו2
                  Selection.ClearContents
                  .Range("b7").Select
               End With
          Next
          
      Application.ScreenUpdating = True
      
      End Sub
      
      
      פ תגובה 1 תגובה אחרונה
      2
      • מנחםמ מנחם

        @פלורידה
        נסה את זה

        Sub מאקרו1()
        
        Dim ws As Worksheet
        Application.ScreenUpdating = False
            
            For Each ws In ThisWorkbook.Sheets
                 With ws
                    .Range("b7").Select
                    מאקרו2
                    Selection.ClearContents
                    .Range("b7").Select
                 End With
            Next
            
        Application.ScreenUpdating = True
        
        End Sub
        
        
        פ מנותק
        פ מנותק
        פלורידה
        כתב ב נערך לאחרונה על ידי
        #3

        @מנחם אמר בvba | עזרה. לא עובר לגליון הבא:

        .Range("b7").Select

        תודה רבה!!

        זה נתקע בשורה 8

        OdedDvirO תגובה 1 תגובה אחרונה
        0
        • פ פלורידה

          @מנחם אמר בvba | עזרה. לא עובר לגליון הבא:

          .Range("b7").Select

          תודה רבה!!

          זה נתקע בשורה 8

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

          @פלורידה אמר בvba | עזרה. לא עובר לגליון הבא:

          זה נתקע בשורה 8

          אתה לא יכול לבצע Select על טווח שאינו בגיליון הפעיל, אלא אם כן תציין לו זאת בפירוש ב Range, למשל:

          Range("'Sheet100'!A:B")
          

          אתה צריך קודם כל להפוך את הגליון הנוכחי שבכל איטרציה של הלולאה לפעיל (שורה 3):

              For Each ws In ThisWorkbook.Sheets
                   With ws
                      .Activate
          
                      .Range("b7").Select
                      מאקרו2
                      Selection.ClearContents
                      .Range("b7").Select
                   End With
              Next
          

          אבל אז לשורה 8 לכאורה לא תהיה שום השפעה (לא ברור לי מה התפקיד שלה)

          פ תגובה 1 תגובה אחרונה
          2
          • OdedDvirO OdedDvir

            @פלורידה אמר בvba | עזרה. לא עובר לגליון הבא:

            זה נתקע בשורה 8

            אתה לא יכול לבצע Select על טווח שאינו בגיליון הפעיל, אלא אם כן תציין לו זאת בפירוש ב Range, למשל:

            Range("'Sheet100'!A:B")
            

            אתה צריך קודם כל להפוך את הגליון הנוכחי שבכל איטרציה של הלולאה לפעיל (שורה 3):

                For Each ws In ThisWorkbook.Sheets
                     With ws
                        .Activate
            
                        .Range("b7").Select
                        מאקרו2
                        Selection.ClearContents
                        .Range("b7").Select
                     End With
                Next
            

            אבל אז לשורה 8 לכאורה לא תהיה שום השפעה (לא ברור לי מה התפקיד שלה)

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

            @odeddvir אמר בvba | עזרה. לא עובר לגליון הבא:

            אבל אז לשורה 8 לכאורה לא תהיה שום השפעה (לא ברור לי מה התפקיד שלה)

            אם אתה עדיין תוהה, אז אתה צודק, רשמתי תא לא נכון.

            רק שאלה להבנה. אשמח אם מישהו יואיל בטובו להסביר לי 🙂

            מה ההבדל באופן הפעולה בין מה מה שניסיתי להשתמש

            Dim i As Long
                For i = 1 To Sheets.Count
            

            למה ש @מנחם הביא?

            Dim ws As Worksheet
                For Each ws In ThisWorkbook.Sheets
            
            OdedDvirO תגובה 1 תגובה אחרונה
            0
            • פ פלורידה

              @odeddvir אמר בvba | עזרה. לא עובר לגליון הבא:

              אבל אז לשורה 8 לכאורה לא תהיה שום השפעה (לא ברור לי מה התפקיד שלה)

              אם אתה עדיין תוהה, אז אתה צודק, רשמתי תא לא נכון.

              רק שאלה להבנה. אשמח אם מישהו יואיל בטובו להסביר לי 🙂

              מה ההבדל באופן הפעולה בין מה מה שניסיתי להשתמש

              Dim i As Long
                  For i = 1 To Sheets.Count
              

              למה ש @מנחם הביא?

              Dim ws As Worksheet
                  For Each ws In ThisWorkbook.Sheets
              
              OdedDvirO מנותק
              OdedDvirO מנותק
              OdedDvir
              כתב ב נערך לאחרונה על ידי OdedDvir
              #6

              @פלורידה אמר בvba | עזרה. לא עובר לגליון הבא:

              מה ההבדל באופן הפעולה בין מה מה שניסיתי להשתמש

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

              1. יותר מודרנית
              2. יותר יעילה
              3. יותר מובנת לקריאה.

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

              כדי שהקוד שלך יעבוד, הוא צריך היה להיות כתוב כך (שים לב לשורה 2):

                  For i = 1 To Sheets.Count
                          Sheets(i).Activate
              
                          Range("b7").Select
                            מאקרו2
                            Selection.ClearContents
                          Range("b7").Select
                  Next i
              
              תגובה 1 תגובה אחרונה
              4
              • dovidD dovid העביר נושא זה מ-תכנות ב-
              תגובה
              • תגובה כנושא
              התחברו כדי לפרסם תגובה
              • מהישן לחדש
              • מהחדש לישן
              • הכי הרבה הצבעות


              בא תתחבר לדף היומי!
              • התחברות

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

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