התקשרו אלינו: 052-2928949

התקשרו אלינו: 052-2928949

טיפ VBA – כיצד נהפוך מחרוזת טקסט

VBA Tip

טיפ VBA – כיצד נהפוך מחרוזת טקסט

VBA Tip

כיצד נהפוך מחרוזת טקסט באמצעות VBA

לפני זמן מה התקשר אליי לקוח שביקש את עזרתי.

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

עם הנתונים באנגלית, לא הייתה בעיה, אולם הנתונים בעברית יצאו, למרבה הצער, הפוכים!

מובן מאליו שלא ניתן היה לעבוד בצורה זו.

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

נזכרתי שבראשית דרכי ב VBA כתבתי קוד שעושה בדיוק את זה, אבל בדרך מסובכת יחסית – מאקרו שבודק את אורך המחרוזת (באמצעות הפונקציה LEN), רץ בלולאה שאורכה כאורך המחרוזת ושולף בכל פעם תו אחד מהסוף להתחלה (באמצעות הפונקציה MID), ואת התו הזה מדביק במחרוזת חדשה, שמשרשרת את התווים בסדר הפוך, ליצירת טקסט עברי תקין.

אז תודה לאל, היום כבר אין בזה צורך לעבוד כל כך קשה, וניתן לעשות זאת בפקודת VBA אחת ויחידה: StrReverse

לדוגמה:

ActiveCell = StrReverse(ActiveCell)

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

המאקרו שכתבתי נראה בערך כך:

For Each CL In Range("a1:a10")

   CL.Value = StrReverse(CL.Value)

Next

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

לאלו מכם שמעדיפים דווקא את לולאת For I, הקוד הבא יתן את אותה התוצאה:

LastRow = Cells(Rows.Count, 1).End(xlUp).Row

For i = 1 To LastRow

   Cells(i, 1) = StrReverse(Cells(i, 1))

Next

על המשתנה LastRow והדרך שבה חישבתי אותו, תוכלו לקרוא במאמר הזה

רוצים ללמוד VBA מספר? לחצו כאן

מעוניינים ללמוד בנוחות ביתכם בקורס מקוון? לחצו כאן

 

 

דילוג לתוכן