אקסס - קוד VBA לחיפוש והחלפה
- 
שלום וברכה, 
 אני צריך קוד VBA שיוכל לעשות באופן אוטומטי את הפעולה שעושה הלחצן של חיפוש והחלפה המובנה באופיס.
 אבל, אני צריך:- שהוא יעבוד דווקא על שדה מסויים בטבלה מסויימת.
- שהוא לא יעבוד אוטומטית אלא שאני אצטרך להריץ אותו. (עדיף שיהיה לי לחצן באיזשהו טופס, אבל אפשר גם דרך עורך הVBA)
- שהוא יחליף לפי סדר מסויים. (דהיינו אני רוצה שאת סדרת המספרים 1-20 הוא יחליף כל מספר לאות, 1-א, 2-ב וכן הלאה. אם הוא יתחיל מ-1 הוא יחליף לי את 11 ל-אא, לכן אני צריך שהוא יתחיל מ20 וירד כלפי מטה).
- אם יש אפשרות (לא חובה): שאת הנתונים מה להחליף הוא יקבל מטבלה אחרת בקובץ. דהיינו, אם יש לי טבלה כזו:  שהקוד ידע שאת מה שבשדה הראשון להחליף במה שבשדה השני. שהקוד ידע שאת מה שבשדה הראשון להחליף במה שבשדה השני.
 אשמח לדעת אם יש אופציה כזו, ואיך. 
 תודה רבה מאוד!
- 
שלום וברכה, 
 אני צריך קוד VBA שיוכל לעשות באופן אוטומטי את הפעולה שעושה הלחצן של חיפוש והחלפה המובנה באופיס.
 אבל, אני צריך:- שהוא יעבוד דווקא על שדה מסויים בטבלה מסויימת.
- שהוא לא יעבוד אוטומטית אלא שאני אצטרך להריץ אותו. (עדיף שיהיה לי לחצן באיזשהו טופס, אבל אפשר גם דרך עורך הVBA)
- שהוא יחליף לפי סדר מסויים. (דהיינו אני רוצה שאת סדרת המספרים 1-20 הוא יחליף כל מספר לאות, 1-א, 2-ב וכן הלאה. אם הוא יתחיל מ-1 הוא יחליף לי את 11 ל-אא, לכן אני צריך שהוא יתחיל מ20 וירד כלפי מטה).
- אם יש אפשרות (לא חובה): שאת הנתונים מה להחליף הוא יקבל מטבלה אחרת בקובץ. דהיינו, אם יש לי טבלה כזו:  שהקוד ידע שאת מה שבשדה הראשון להחליף במה שבשדה השני. שהקוד ידע שאת מה שבשדה הראשון להחליף במה שבשדה השני.
 אשמח לדעת אם יש אופציה כזו, ואיך. 
 תודה רבה מאוד!@איש-פלוני אמר באקסס - קוד VBA לחיפוש והחלפה: הוא יחליף לי את 11 ל-אא, לכן אני צריך שהוא יתחיל מ20 וירד כלפי מטה). למה לא שאילתת עדכון? אתה מביא את 2 הטבלאות הנ"ל (1. הטבלה של המספרים והאותיות, 2. הטבלה שבה אתה רוצה להחליף) 
 מוסיף קריטריון שהמספר בטבלה שאתה רוצה להחליף = המספר בטבלה של האותיות, ומעדכן את המספר לאותית,
 רק שים לב שכדאי שהכל יהיה בעיצוב של string - או שתשתמש בהחלפה ע"י Cstr() או Clng()
- 
@איש-פלוני אמר באקסס - קוד VBA לחיפוש והחלפה: הוא יחליף לי את 11 ל-אא, לכן אני צריך שהוא יתחיל מ20 וירד כלפי מטה). למה לא שאילתת עדכון? אתה מביא את 2 הטבלאות הנ"ל (1. הטבלה של המספרים והאותיות, 2. הטבלה שבה אתה רוצה להחליף) 
 מוסיף קריטריון שהמספר בטבלה שאתה רוצה להחליף = המספר בטבלה של האותיות, ומעדכן את המספר לאותית,
 רק שים לב שכדאי שהכל יהיה בעיצוב של string - או שתשתמש בהחלפה ע"י Cstr() או Clng()
- 
@avi-rz כי עדכון יחליף לי את כל מה שבשדה. אני רוצה שאם בשדה כתוב 1 XXXזה יהפוך לא XXXולא רק לא.@איש-פלוני תוכל להשתמש בשאילתת עדכון ולשמור את הערך הקיים, פשוט תבצע Replace על הערך הקיים, כלומר למשל על השדה SomeField תעדכן ל: Replace([SomeField],'1','א')או בשימוש עם טבלת עזר MyTable כמו שציין @avi-rz, ותשלוף את הערכים משם: Replace([SomeField], MyTable.OldValue, MyTable.NewValue)
- 
@avi-rz כי עדכון יחליף לי את כל מה שבשדה. אני רוצה שאם בשדה כתוב 1 XXXזה יהפוך לא XXXולא רק לא.
- 
@איש-פלוני בשאילתת עדכון אתה יכול לכתוב Replace. בקיצור זה פתרון מצויין, 
 אבל כדאי שתביא דוגמת נתונים קטנה כדי שיהיה קל להסביר.
- 
@איש-פלוני תוכל להשתמש בשאילתת עדכון ולשמור את הערך הקיים, פשוט תבצע Replace על הערך הקיים, כלומר למשל על השדה SomeField תעדכן ל: Replace([SomeField],'1','א')או בשימוש עם טבלת עזר MyTable כמו שציין @avi-rz, ותשלוף את הערכים משם: Replace([SomeField], MyTable.OldValue, MyTable.NewValue)@odeddvir אמר באקסס - קוד VBA לחיפוש והחלפה: או בשימוש עם טבלת עזר MyTable כמו שציין @avi-rz, ותשלוף את הערכים משם: 
 Replace([SomeField], MyTable.OldValue, MyTable.NewValue)יש אפשרות להגדיר לו לפי איזה סדר הוא יחליף? 
 אחרת חוזרת הבעיה שכתבתי:@איש-פלוני אמר באקסס - קוד VBA לחיפוש והחלפה: אם הוא יתחיל מ-1 הוא יחליף לי את 11 ל-אא, לכן אני צריך שהוא יירד כלפי מטה. 
- 
@איש-פלוני תוכל להשתמש בשאילתת עדכון ולשמור את הערך הקיים, פשוט תבצע Replace על הערך הקיים, כלומר למשל על השדה SomeField תעדכן ל: Replace([SomeField],'1','א')או בשימוש עם טבלת עזר MyTable כמו שציין @avi-rz, ותשלוף את הערכים משם: Replace([SomeField], MyTable.OldValue, MyTable.NewValue)@odeddvir אמר באקסס - קוד VBA לחיפוש והחלפה: @איש-פלוני תוכל להשתמש בשאילתת עדכון ולשמור את הערך הקיים, פשוט תבצע Replace על הערך הקיים, כלומר למשל על השדה SomeField תעדכן ל: Replace([SomeField],'1','א')אני יכול להגדיר לו כמה נתונים להחלפה (דהיינו, Replace([SomeField],'1','א'), וReplace([SomeField],'2','ב')) ? כשניסיתי לעשות שאילתה שבכל אחד מהשדות אותה פונקציה עם נתונים שונים זה מעלה לי הודעת שגיאה על כפילות ביעד הפלט.
 תודה רבה!
- 
שלום וברכה, 
 אני צריך קוד VBA שיוכל לעשות באופן אוטומטי את הפעולה שעושה הלחצן של חיפוש והחלפה המובנה באופיס.
 אבל, אני צריך:- שהוא יעבוד דווקא על שדה מסויים בטבלה מסויימת.
- שהוא לא יעבוד אוטומטית אלא שאני אצטרך להריץ אותו. (עדיף שיהיה לי לחצן באיזשהו טופס, אבל אפשר גם דרך עורך הVBA)
- שהוא יחליף לפי סדר מסויים. (דהיינו אני רוצה שאת סדרת המספרים 1-20 הוא יחליף כל מספר לאות, 1-א, 2-ב וכן הלאה. אם הוא יתחיל מ-1 הוא יחליף לי את 11 ל-אא, לכן אני צריך שהוא יתחיל מ20 וירד כלפי מטה).
- אם יש אפשרות (לא חובה): שאת הנתונים מה להחליף הוא יקבל מטבלה אחרת בקובץ. דהיינו, אם יש לי טבלה כזו:  שהקוד ידע שאת מה שבשדה הראשון להחליף במה שבשדה השני. שהקוד ידע שאת מה שבשדה הראשון להחליף במה שבשדה השני.
 אשמח לדעת אם יש אופציה כזו, ואיך. 
 תודה רבה מאוד!@איש-פלוני אני מציע לך דרך פשוטה יותר: 
 א. צור טבלה להחלפה עם עמודות כדלקמן:OldValue NewValue 1 א 2 ב ... 19 יט 20 כ ב. תבודד את המספר מהשדה המקורי אל שדה נפרד X על ידי מניפולציה על המחרוזת. 
 ג. קשר את הטבלאות על ידי השדות X-OldValue
 ד. תריץ שאילתת עדכון שתחליף בין הערך המספרי בשדה המקורי לערך NewValue:Replace([SomeField],OldValue, NewValue)
- 
@איש-פלוני אני מציע לך דרך פשוטה יותר: 
 א. צור טבלה להחלפה עם עמודות כדלקמן:OldValue NewValue 1 א 2 ב ... 19 יט 20 כ ב. תבודד את המספר מהשדה המקורי אל שדה נפרד X על ידי מניפולציה על המחרוזת. 
 ג. קשר את הטבלאות על ידי השדות X-OldValue
 ד. תריץ שאילתת עדכון שתחליף בין הערך המספרי בשדה המקורי לערך NewValue:Replace([SomeField],OldValue, NewValue)@odeddvir אמר באקסס - קוד VBA לחיפוש והחלפה: ב. תבודד את המספר מהשדה המקורי אל שדה נפרד X על ידי מניפולציה על המחרוזת. 
 ג. קשר את הטבלאות על ידי השדות X-OldValueלא הבנתי מה אני צריך לעשות ואיך... 
 השדה הנפרד הוא בטבלה נוספת? "השדה המקורי" הכוונה לטבלה החדשה שיצרתי עכשיו? איך עושים מניפולציה על המחרוזת?
- 
@odeddvir אמר באקסס - קוד VBA לחיפוש והחלפה: @איש-פלוני תוכל להשתמש בשאילתת עדכון ולשמור את הערך הקיים, פשוט תבצע Replace על הערך הקיים, כלומר למשל על השדה SomeField תעדכן ל: Replace([SomeField],'1','א')אני יכול להגדיר לו כמה נתונים להחלפה (דהיינו, Replace([SomeField],'1','א'), וReplace([SomeField],'2','ב')) ? כשניסיתי לעשות שאילתה שבכל אחד מהשדות אותה פונקציה עם נתונים שונים זה מעלה לי הודעת שגיאה על כפילות ביעד הפלט.
 תודה רבה!@איש-פלוני ראשית כל אתה צריך להצליח לתשאל את הkatalogM באופן שמחלץ את המספר: SELECT Mid([kategHeara],1,InStr([kategHeara],".")-1) as מניפולציה, kategHeara FROM katalogMתראה אם זה מוציא לך טוב את המספר. 
 שלב שני זה לעשות מה ש@OdedDvir הציע.
- 
@איש-פלוני ראשית כל אתה צריך להצליח לתשאל את הkatalogM באופן שמחלץ את המספר: SELECT Mid([kategHeara],1,InStr([kategHeara],".")-1) as מניפולציה, kategHeara FROM katalogMתראה אם זה מוציא לך טוב את המספר. 
 שלב שני זה לעשות מה ש@OdedDvir הציע.
- 
@odeddvir אמר באקסס - קוד VBA לחיפוש והחלפה: ב. תבודד את המספר מהשדה המקורי אל שדה נפרד X על ידי מניפולציה על המחרוזת. 
 ג. קשר את הטבלאות על ידי השדות X-OldValueלא הבנתי מה אני צריך לעשות ואיך... 
 השדה הנפרד הוא בטבלה נוספת? "השדה המקורי" הכוונה לטבלה החדשה שיצרתי עכשיו? איך עושים מניפולציה על המחרוזת?@איש-פלוני 
 או שתחלץ את המספר עם הפונקציה הזאת. (בהנחה שאין עוד מספרים בשדה)Public Function GetNumerals(str As String) As String Dim i As Integer For i = 1 To Len(str) If IsNumeric(Mid(str, i, 1)) Then GetNumerals = GetNumerals & Mid(str, i, 1) End If Next i End Function
- 
@איש-פלוני תואיל להדביק פה את לשון השאילתה אחרי השינויים שעשית. 
- 
@איש-פלוני חסר פרמטר אחד בקוד של @dovid , צ"ל: SELECT Mid([kategHeara],1,InStr(1,[kategHeara],".")-1) as מניפולציה, kategHeara FROM katalogM(עריכה: מה שכתבתי לעיל שגוי, עיין בהערת @dovid לקמן) 
- 
@dovid אמר באקסס - קוד VBA לחיפוש והחלפה: זה אופציונלי. נכון, אבל צריך לכל הפחות להשמיט ולהשאיר מקום ריק, כך: SELECT Mid([kategHeara],1,InStr(,[kategHeara],".")-1) as מניפולציה, kategHeara FROM katalogM
- 
בס"ד 
 אולי יעזור לך:
 הקוד להלן הוא ממיר מחזיר גימטריה ממספר לאותיות - ומאותיות למספר, זה נכון עד למספר 499 ו אותיות עד תצט,
 אפשר להוסיף - זה פשוט קוד ישן שלי.Public Function GetGimatryya(str_ As Variant) As Long Dim i As Long Dim longht_ As Long Dim Y As Long Dim out As Long Dim str_to_out As String longht_ = Len(Nz(str_, "")) For i = 1 To longht_ str_to_out = Mid(str_, i, 1) Select Case str_to_out Case "א", "ב", "ג", "ד", "ה", "ו", "ז", "ח", "ט", "י", "כ", "ל", "מ", "נ", "ס", "ע", "פ", "צ", "ק", "ר", "ש", "ת", "ך", "ם", "ן", "ף": Y = Asc(str_to_out) - 223 Case Else Y = 0 End Select arr_ = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 20, 30, 40, 40, 50, 50, 60, 70, 80, 80, 90, 90, 100, 200, 300, 400) out = Nz(out, 0) + arr_(Y) Next i GetGimatryya = out End Function Public Function GetGimatryyaStr(str_ As Variant) As String Dim i As Long Dim longht_ As Long Dim Y As Long Dim out As String Dim str_to_out As Long longht_ = Len(Nz(str_, "")) arr_ = Array("", "א", "ב", "ג", "ד", "ה", "ו", "ז", "ח", "ט", "י", "י", "כ", "ל", "מ", "נ", "ס", "ע", "פ", "צ", "ק", "ק", "ר", "ש", "ת") For i = 1 To longht_ Select Case (longht_ + 1) - i Case 1: str_to_out = CLng(IIf(Nz(Mid(str_, i, 1), "") = "", 0, Mid(str_, i, 1))) out = Nz(out, 0) + arr_(str_to_out) Case 2: str_to_out = CLng(IIf(Nz(Mid(str_, i, 1), "") = "", 0, Mid(str_, i, 1))) out = Nz(out, 0) + arr_(str_to_out + 10) Case Else str_to_out = CLng(IIf(Nz(Mid(str_, i, 1), "") = "", 0, Mid(str_, i, 1))) out = Nz(out, 0) + arr_(str_to_out + 20) End Select Next i GetGimatryyaStr = out End Functionאפשר לנסות Debug.Print GetGimatryya("רמח") Debug.Print GetGimatryyaStr(499)
 





