السلام عليكم ورحمة الله وبركاته
في سؤال لأحد الأخوة في أحد المنتديات ، طلب
دالة أو كود يقوم بعكس النصوص بحيث يتم عكس النص بالكامل ما عدا الأرقام ..
في الحقيقة يمكن ببساطة عكس النص بالكامل باستخدام دالة في الـ VBA تعرف بالـ StrReverse وهي تقوم بعكس النص .. وهذا مثال بسيط يوضح كيفية استخدام الدالة
CODE
Sub Example1()
Dim s As String
s = "Yasser Khalil"
Debug.Print StrReverse(s)
End Sub
الكود السابق سيقوم بعكس النص باستخدام الدالة StrReverse لتظهر النتيجة في النافذة الفورية بهذا الشكل lilahK ressaY
المشكلة في أن الدالة ستتعامل مع الأرقام بنفس المنطق ويتم عكس الأرقام أيضاً . وفي هذا الموضوع نريد تجنب حدوث ذلك
تكمن الفكرة في حل المشكلة في أن نقوم بعكس النص بالكامل ثم نقوم بعمل انشطار لأجزاء النص بحيث نقوم بعمل حلقة تكرارية على الأجزاء التي تم تجزئتها ثم نقوم باختبار ما إذا كان الجزء المقسوم رقم أو لا ، فإذا كان رقم يتم استخدام الدالة التي تقوم بعكس النص مرة أخرى ، ليرجع الرقم إلى وضعه الأصلي
وأخيراً إليكم الدالة المعرفة التي تقوم بتطبيق الفكرة التي ذكرناها
CODE
Sub Test_ReverseText_UDF()
Dim s As String
s = "Hello World 2021 YasserKhalil"
Debug.Print ReverseText(s)
End Sub
Public Function ReverseText(s As String) As String
Dim a() As String, i As Long
s = StrReverse(s)
a = Split(s)
For i = 1 To UBound(a)
If IsNumeric(a(i)) Then a(i) = StrReverse(a(i))
Next i
ReverseText = Join(a)
End Function
كان معكم أخوكم في الله / ياسر خليل أبو البراء