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

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

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

צביעת תא ע"פ ערך

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

    שלום וברכה.
    יש לי קובץ אקסל עם קוד למשיכת נתונים מאקסס, הקוד עובד כך שהוא 'קורא' את מספר התא ועפי"ז מייבא נתונים מאקסס.
    הקוד הוא:

    Function GetName(mid As String) As String
    On Error GoTo Error_GetMit
    Dim MyConnection    As ADODB.Connection
    Dim MyRecordset     As ADODB.Recordset
    Dim MyQuery         As String
    Dim path            As String
    
    Set MyConnection = New ADODB.Connection
    Set MyRecordset = New ADODB.Recordset
    Set MyRecordset1 = New ADODB.Recordset
    
    MyConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & path
    MyConnection.Open MyConnectionString
    
    MyQuery = "select * from Table1 WHERE Number = '" & mid & "'"
    Set MyRecordset = MyConnection.Execute(MyQuery)
    
    If IsNull(MyRecordset.Fields(2).Value) Then
        GetMit = "Not Found"
    Else
        GetMit = MyRecordset.Fields(2).Value
    End If
    
    MyRecordset.Close
    Set MyRecordset = Nothing
    MyRecordset1.Close
    Set MyRecordset1 = Nothing
    MyConnection.Close
    Set MyConnection = Nothing
    Exit Function
    
    Error_GetMit:
        GetMit = "Error"
        MyRecordset.Close
        Set MyRecordset = Nothing
        MyRecordset1.Close
        Set MyRecordset1 = Nothing
        MyConnection.Close
        Set MyConnection = Nothing
    End Function
    
    

    ובגיליון:

    =GetName(DN23)
    

    הקוד עובד מצוין.
    אני רוצה עכשיו לעשות שבקוד ההוא (GetName) יהיה תנאי שאם הערך שווה ל"פלוני" לדוג' הוא יצבע את התא בצהוב.
    יש איך לכתוב את זה בקוד (ולא בעיצוב מותנה)?
    תודה רבה.

    OdedDvirO תגובה 1 תגובה אחרונה
    0
    • OdedDvirO מנותק
      OdedDvirO מנותק
      OdedDvir
      השיב לארי ב נערך לאחרונה על ידי
      #2

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

      Range("A1:B10").Interior.Color = RGB(100, 100, 0)
      

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

      If ActiveCell.Value = "פלוני" Then
          ActiveCell.Interior.Color = RGB(100, 100, 0)
      End If
      
      א תגובה 1 תגובה אחרונה
      0
      • א מנותק
        א מנותק
        ארי
        השיב לOdedDvir ב נערך לאחרונה על ידי
        #3

        @odeddvir תודה.
        אבל האמת היא שאני רוצה לכתוב את הנוסחה ע"פ עמודה אחרת בטבלה באקסס.
        כך שאחרי:

        If IsNull(MyRecordset.Fields(9).Value) Then
            GetMit = "Not Found"
        Else
            GetMit = MyRecordset.Fields(9).Value
        End If
        

        יהיה משהו כזה:

        If MyRecordset.Fields(7).Value = "1234" Then
            ActiveCell.Interior.Color = RGB(100, 100, 0)
        End If
        

        כך שהערך "1234" לא יופיע באקסל, אבל התא יופיע בצבע צהוב.
        אבל זה לא עובד....
        מה הבעיה?
        תודה.

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

          @ארי אני מתקשה להבין את הקוד שלך. מה זה המשתנה GetMit, הוא אינו מוצהר בפונקציה.
          וכן לא ברור מה הכוונה במשפט "זה לא עובד", האם אתה מצליח לקרוא את הערך שנמצא ב: MyRecordset.Fields(7).Value ? מה בכלל אמור השדה מספר 7 להכיל? מספר או מחרוזת?
          נסה לשתף אותנו בכל התמונה, פשוט אין לי כוח וזמן לנחש במה מדובר.

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

            @odeddvir סליחה, GetMit זה בטעות חלק מקוד אחר, זה אמור להיות GetName.
            אז ככה, הקוד:

            If MyRecordset.Fields(7).Value = "8980" Then
                ActiveCell.Interior.Color = vbYellow
            End If
            

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

            OdedDvirO תגובה 1 תגובה אחרונה
            1
            • OdedDvirO מנותק
              OdedDvirO מנותק
              OdedDvir
              השיב לארי ב נערך לאחרונה על ידי
              #6

              @ארי תפתח חלון VBA ובחלונית Immediate תרשום את הפקודה:

                  ActiveCell.Interior.Color = vbYellow
              

              האם הצבע של התא הנוכחי משתנה?

              הוא לא מדאבג אלא מחזיר לי #VALUE.

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

              ' On Error GoTo Error_GetMit
              

              ותראה איזו שגיאה מתקבלת.

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

                @odeddvir אמר בצביעת תא ע"פ ערך:

                האם הצבע של התא הנוכחי משתנה?

                כן.

                @odeddvir אמר בצביעת תא ע"פ ערך:

                תבטל את שורה מספר 2 (תהפוך להערה):

                זה עדיין מחזיר #VALUE.

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

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

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

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