מאקרו המחפש ערך במספר גיליונות

מאקרו המחפש ערך במספר גיליונות

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

תודה לעוזרים
 

u333

New member
נסה את הקוד הבא

ניתן להתאימו לצרכיך למשל ע"י בדיקת אורך עמודה A בכל קובץ וחיפוש רק בתחום עם הנתונים.
ניתן להוסיף הערה/הודעה אם המספר לא נמצא באף גיליון.
קוד:
Sub FindNum()
    For Each sh In ThisWorkbook.Sheets
        For Each cl In sh.Range("A1:A999")
            If cl.Value = ActiveSheet.Range("C2") Then [F2] = sh.Name
        Next
    Next
End Sub
 
אוקי הצלחתי. זה עובד מצויין. המון תודות..

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

u333

New member
שים לב - הוספתי שורה בהתחלה ושורה בסוף הקוד

קוד:
Sub FindNum()
[F2] = ""
    For Each sh In ThisWorkbook.Sheets
        For Each cl In sh.Range("A1:A999")
            If cl.Value = ActiveSheet.Range("C2") Then [F2] = sh.Name
        Next
    Next
If [F2] = "" Then [F2] = "לא נמצא באף גיליון"
End Sub

או, במקום זאת - להוסיף MSGBOX עם הודעה מתאימה.
ואז השורה האחרונה תראה כך:
If [F2] = "" Then MsgBox "לא נמצא באף גיליון"
 

מיכאל אבידן

Member
מנהל
אני הייתי משתמש במקרו אירוע שמוצת בשינוי תא C2 . . .‏


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

אין לי ספק שלאחר 2 ספלי קפה - ניתן יהיה לקצרו...

את המקרו יש להקליד במודול גיליון "ראשי".

 

u333

New member
נסה את הקוד הבא (התעלם מהעברית המשובשת בשורה האחרונה)

קוד:
Sub FindNum()
[F2] = ""
    For Each sh In ThisWorkbook.Sheets
        sh.Cells.Font.ColorIndex = xlAutomatic
    Next
    For Each sh In ThisWorkbook.Sheets
        For Each cl In sh.Range("A1:A999")
            If cl.Value = ActiveSheet.Range("C2") Then
            [F2] = sh.Name
            sh.Activate
            cl.Font.Color = vbRed
            Exit Sub
            End If
        Next
    Next
If [F2] = "" Then MsgBox "ìà ðîöà áàó âéìéåï"
End Sub
 
למעלה