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

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

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

קוד מאקרו שאינו עובד

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

    עשיתי איזה מאקרו ומשום מה זה לא עובד, מישהו יודע מה הבעיה?!

    Sub הצג()
    Dim A, B, C
    A = InputBox("סיסמא", "הכנס סיסמא להצגה", , 13000, 6000)
    B = 900 / 3
    C = B / 3
    Application.Run "'חוברת1.xlsm'!Macro13"
    If A = C Then
    Range("R4").Select
        Selection.End(xlDown).Select
        ActiveCell.Offset(1, -8).Range("A1").Select
    ActiveCell.FormulaR1C1 = "הצג"
    Else
    Beep
    MsgBox ("הסיסמא אינה נכונה")
    End If
    MsgBox ("שלום ותודה!")
    ActiveCell.FormulaR1C1 = "אל תציג"
    End Sub
    

    ובהזדמנות זו אשאל האם יש אפשרות ב'MsgBox' שההודעה תופיע זמן מסוים ולאחמ"כ היא תעלם?!

    מ nachN 2 תגובות תגובה אחרונה
    1
    • nachN מנותק
      nachN מנותק
      nach
      השיב לחנון המרבה ב נערך לאחרונה על ידי
      #2

      @חנון-המרבה המאקרו לא רץ בכלל? או שהוא נתקע איפשהו? כי א"כ היכן הוא נתקע? מה הודעת השגיאה שקופצת לך? (או שבכלל הוא נתקע בהרצה של הפונקציה השניה שאתה קורא לה מתוכה (מאקרו 13) שהקובץ המצוין לא זמין וכדו')
      תוכל לתת יותר פרטים?

      חנון המרבהח תגובה 1 תגובה אחרונה
      3
      • אורייא מנותק
        אורייא מנותק
        אוריי
        השיב למשחזר מידע ב נערך לאחרונה על ידי
        #3

        @משחזר-מידע אמר בקוד מאקרו שאינו עובד:

        @חנון-המרבה אמר בקוד מאקרו שאינו עובד:

        ובהזדמנות זו אשאל האם יש אפשרות ב'MsgBox' שההודעה תופיע זמן מסוים ולאחמ"כ היא תעלם?!

        createobject("wscript.shell").popup(...)
        

        @משחזר-מידע תוכל לתת לי הסבר איך בדיוק עושים את זה (קצת יותר מפורט)
        תודה מראש..

        ניתן לפנות אלי גם ב al0548446188@gmail.com
        ותמיד... אבל תמיד תוכלו לשאול אותי ב :) כאן שאלות באקסל

        מ תגובה 1 תגובה אחרונה
        0
        • חנון המרבהח מנותק
          חנון המרבהח מנותק
          חנון המרבה
          השיב לnach ב נערך לאחרונה על ידי
          #4

          @nach זה לא נתקע, אבל אני מכניס את הנתון הנכון ב InputBox וזה מחזיר לי MsgBox של השגיאה (דהיינו שקופץ לי חלון "הסיסמא אינה נכונה")

          nachN תגובה 1 תגובה אחרונה
          0
          • nachN מנותק
            nachN מנותק
            nach
            השיב לחנון המרבה ב נערך לאחרונה על ידי nach
            #5

            @חנון-המרבה
            לא מבין איפה השאלה, כנראה שאכן הסיסמא אינה נכונה אתה מחפש בקוד האם Aשווה לC והיות שמה שהזנת לא שווה לC לכן הוא עובר לבלוק ההוראות הבא שאומר להדפיס הודעה כנ"ל,
            תנסה להכניס את הסיסמא 100, תבדוק אם יעבוד.

            תגובה 1 תגובה אחרונה
            1
            • nachN מנותק
              nachN מנותק
              nach
              כתב ב נערך לאחרונה על ידי
              #6

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

              תגובה 1 תגובה אחרונה
              2
              • dovidD מנותק
                dovidD מנותק
                dovid ניהול
                כתב ב נערך לאחרונה על ידי dovid
                #7

                הבעיה היא בגלל שה100 הינו טקסט, היינו "100", וזה שונה מ100 שהוא מספר.
                למשל הקוד הבא

                Dim aNumber
                Dim bStr
                
                aNumber = 1000
                bStr = "1000"
                
                If bStr = aNumber Then
                    MsgBox "שווה"
                Else
                    MsgBox "שונה"
                End If
                

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

                אז הפתרון הוא לכתוב ככה:

                If bStr = ("" & aNumber) Then
                

                או אלגנטית לפי הספר, המרה לטקסט

                If bStr = CStr(aNumber) Then
                

                שזה אומר במקרה שלנו לכתוב

                If A = CStr(C) Then
                

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                clickoneC dovidD 2 תגובות תגובה אחרונה
                2
                • clickoneC מנותק
                  clickoneC מנותק
                  clickone
                  השיב לdovid ב נערך לאחרונה על ידי clickone
                  #8

                  @dovid אמר בקוד מאקרו שאינו עובד:

                  הבעיה היא בגלל שה100 הינו טקסט, היינו "100", וזה שונה מ100 שהוא מספר.

                  בVBA
                  100="100"

                  ?100="100"
                  True
                  

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

                  בכל מקרה, כמו ש @dovid כתב, הפיתרון הוא להמיר לסטרינג

                  If A = CStr(C) Then
                  

                  אין טסט כמו פרודקשן.

                  המייל שלי urivpn@gmail.com

                  תגובה 1 תגובה אחרונה
                  1
                  • dovidD מנותק
                    dovidD מנותק
                    dovid ניהול
                    השיב לdovid ב נערך לאחרונה על ידי
                    #9

                    @dovid אמר בקוד מאקרו שאינו עובד:

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

                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                    dovidD תגובה 1 תגובה אחרונה
                    2
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      השיב לdovid ב נערך לאחרונה על ידי
                      #10

                      @clickone הצדק איתך, זכרת טוב. גם במשתנים זה עובד יופי.
                      ניסיתי להבין מה ההבדל בין 100="100" לבין משתנים, וההבדל היחיד שחשבתי זה שהמפרש ממיר את המספר לטקסט לפני ההשוואה, כי הוא רואה שזה טיפוסים שונים. נו ולמה הוא לא רואה במשתנים? הסתכלתי על הקוד והבנתי! המשתנים הם חסרי סוג!

                      כלומר הפתרון הוא לכתוב:

                      Dim A As String
                      Dim B, C As Integer
                      

                      ואז זה עובד...

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      תגובה 1 תגובה אחרונה
                      2
                      • dovidD מנותק
                        dovidD מנותק
                        dovid ניהול
                        השיב למשחזר מידע ב נערך לאחרונה על ידי dovid
                        #11

                        @חנון-המרבה תשתדל לפתוח כל פעם נושא נפרד לכל שאלה.

                        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                        בכל נושא אפשר ליצור קשר dovid@tchumim.com

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

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

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

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