لری تعجب می کند که آیا میانبر صفحه کلید برای پرش به انتهای کلمه وجود دارد یا خیر. او میداند که Ctrl+Right Arrow به ابتدای کلمه بعدی میپرد، اما میخواهد قبل از علامتگذاری یا فاصله به انتهای کلمه بعدی بپرد.
هیچ میانبری داخلی برای انجام این کار وجود ندارد. تنها راهی که میتوان آن را انجام داد، استفاده از یک ماکرو است که میتوان آن را به یک کلید میانبر اختصاص داد. ممکن است فکر کنید که میتوانید به سادگی یک ماکرو ضبط کنید که به ابتدای کلمه بعدی (با فشار دادن Ctrl + فلش راست ) منتقل میشود و سپس از یک کاراکتر (با فشار دادن فلش چپ ) نسخه پشتیبان تهیه کنید. با این حال، این کار نمی کند، زیرا Ctrl + Right Arrow در واقع به ابتدای کلمه بعدی یا به سمت چپ علامت نگارشی بعدی حرکت می کند، هر کدام که اول باشد. بنابراین، اگر کلید میانبر به سمت چپ نقطه (مثلا) در انتهای یک جمله حرکت کند، حرکت یک کاراکتر به سمت چپ شما را به جای اینکه در انتهای کلمه قرار دهید، در داخل کلمه قرار می دهد.
بنابراین، پس از استفاده از Ctrl+Right Arrow، ماکرو شما باید واقعاً آنچه را که در سمت چپ نقطه درج قرار دارد، ارزیابی کند . موارد زیر دقیقاً این کار را انجام می دهد:
Sub MoveToEndOfWord1() Selection.MoveRight Unit:=wdWord, Count:=1 Selection.MoveLeft Unit:=wdCharacter, Count:=1 If Selection.Text <> " " Then Selection.MoveRight Unit:=wdCharacter, Count:=1 End If End Sub
تنها اخطار برای ماکرو این است که باید آن را از داخل یک کلمه اجرا کنید. اگر قبلاً در انتهای یک کلمه هستید، هیچ کاری انجام نمی دهد. اگر ماکرویی میخواهید که از انتهای کلمه نیز کار کند، باید آن را کمی تغییر دهید:
Sub MoveToEndOfWord2() If Selection.Text = " " Then Selection.MoveRight Unit:=wdWord, Count:=1 End If Selection.MoveRight Unit:=wdWord, Count:=1 Selection.MoveLeft Unit:=wdCharacter, Count:=1 If Selection.Text <> " " Then Selection.MoveRight Unit:=wdCharacter, Count:=1 End If End Sub