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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
6 פוסטים 3 כותבים 195 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • פ מנותק
    פ מנותק
    פלורידה
    כתב ב נערך לאחרונה על ידי פלורידה
    #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
    • מנחםמ מנותק
      מנחםמ מנותק
      מנחם
      השיב לפלורידה ב נערך לאחרונה על ידי מנחם
      #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
      • פ מנותק
        פ מנותק
        פלורידה
        השיב למנחם ב נערך לאחרונה על ידי
        #3

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

        .Range("b7").Select

        תודה רבה!!

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

        OdedDvirO תגובה 1 תגובה אחרונה
        0
        • 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
          • פ מנותק
            פ מנותק
            פלורידה
            השיב לOdedDvir ב נערך לאחרונה על ידי פלורידה
            #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
            • 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
              • דף הבית
              • קטגוריות
              • פוסטים אחרונים
              • משתמשים
              • חיפוש
              • חוקי הפורום