פורום שאלות ותשובות

ברוכים הבאים לפורום שאלות ותשובות באופיס

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

ר' שואל:

שלום,

אני צריך לכתוב ב-VBA פרוצדורה לאקסל שתחליף בטווח של תאים שנמצא בעמודה A את התו נקודה "." בתו רווח.

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

תודה רבה

תשובה:

מצ"ב הצעה לפיתרון -

1. בגיליון אקסל נגדיר את הרשימה המקורית בעמודה A.

2. נפתח את עורך VBA על ידי לחיצה על Alt+F11. בצד ימין נסמל את Microsoft Excel Objects מתחת לשם קובץ האקסל, נלחץ לחצן ימני ונבחר Insert ו-Module.

3. נעתיק ונדביק את הקוד הבא לעורך VBA.

   הקוד עובר על כל הערכים בעמודה A החל משורה 1 ועד שמגיע לשורה ריקה.

   עבור כל תא בו נמצא ערך - נעשה שימוש בפונקציית אקסל Replace להחלפת התו נקודה ברווח.

   הפרמטר הראשון בפונקציה Replace הוא ערך המקור (ערך תא בעמודה A).

   הפרמטר השני הוא הערך שיש לחפש בערך המקור (התו נקודה).

   הפרמטר השלישי הוא הערך שבו יש להחליף את ערך המקור (התו רווח).

   הפרמטר הרביעי הוא מספר התו בערך המקור ממנו יש להתחיל את החיפוש וההחלפה (אין חובה להגדיר את הפרמטר. במידה והפרמטר לא מוגדר - החיפוש יחל בתו הראשון).

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

   הפרמטר השישי הוא סוג ההשוואה שיש לבצע בעת החיפוש בערך המקור (במקרה שלנו השוואת טקסט (vbTextCompare). ניתן לבחור גם השוואה בינארית vbBinaryCompare).

 

Public Sub Remove_Dots()

    With ActiveWorkbook.Sheets("Sheet1")
        
        lngCurRow = 1
        intCurColumn = 1
        
        While .Cells(lngCurRow, intCurColumn) <> ""
            .Cells(lngCurRow, intCurColumn) = Replace(.Cells(lngCurRow, intCurColumn), ".", " ", , , vbTextCompare)
            lngCurRow = lngCurRow + 1
        Wend
        
    End With

End Sub

 4. בסרגל הכלים נלחץ על לחצן הפעלת קוד מקרו (משולש ירוק) ובחלונית שנפתחת נבחר במקרו Remove_Dots ונלחץ על Run.

5. מצ"ב התוצאה לאחר הרצת הקוד. ניתן לראות שבכל הערכים בעמודה A הוחלף התו נקודה (.) בתו רווח.

 

בברכה,

צוות AnyFit