ری تعجب می کند که آیا راهی برای حرکت دادن کل جدول Word به صورت عمودی، پیکسل به پیکسل وجود دارد؟ همه چیزهایی که خوانده است نشان می دهد که گرفتن آن و نگه داشتن کلید Alt این امکان را فراهم می کند، اما به راحتی کار نمی کند.
من مطمئن نیستم که Ray کجا خوانده است، اما کلید Alt اجازه حرکت دادن جداول را نمی دهد. در واقع، به نظر نمیرسد که اصلاً برای حرکت جدول کار کند، به استثنای یک استثنا - اگر Shift+Alt را فشار دهید و سپس از کلیدهای جهتدار بالا یا پایین استفاده کنید، جدول یک پاراگراف کامل در سند شما به بالا یا پایین منتقل میشود.
سایر ترکیبات ضربه زدن به کلید نیز کار نمی کنند. شما فکر میکنید که جدولهای تکان دادن مانند سایر اشیاء در یک سند کار میکنند—شما شی را انتخاب میکنید و سپس از کلیدهای جهتدار برای دادن ضربه استفاده میکنید. با این حال، با جداول اصلا کار نمی کند. اگر جدول را انتخاب کنید و سپس کلیدهای جهت دار بالا یا پایین را فشار دهید، Word جدول را از حالت انتخاب خارج می کند و نقطه درج را به بالا یا پایین جدول در سند منتقل می کند.
با این حال، چند راه حل وجود دارد که می توانید از آنها استفاده کنید. ابتدا، می توانید نحوه قرار دادن جداول خود را در سند تنظیم کنید. به سادگی آنها را در یک جعبه متن قرار دهید، و سپس می توانید از کلیدهای جهت دار برای حرکت دادن جعبه متن استفاده کنید. (همچنین می توانید حاشیه را در کادر متن فرمت کنید تا نمایش داده نشود.)
راه حل دیگر استفاده از ماکرو برای انجام حرکت است. ماکرو زیر جدول را یک پیکسل به سمت بالا حرکت می دهد:
Sub MoveTableUp1()set pxl to the number of pixels to move: positive for down andnegative for up Const pxl As Single = -1 If Not Selection.Information(wdWithInTable) Then Exit Sub With Selection.Tables(1) .Rows.VerticalPosition = .Rows.VerticalPosition + PixelsToPoints(pxl) End With End Sub
تنها کاری که باید انجام دهید این است که مطمئن شوید نقطه درج در جدولی است که می خواهید به آن ضربه بزنید. اگر می خواهید جدول را به جای بالا به پایین ببرید، به سادگی تعریف ثابت pxl را به جای منفی 1 به 1 مثبت تغییر دهید.
نکته دیگری وجود دارد که باید در مورد این ماکرو توجه داشته باشید—ممکن است طرح بندی سند شما را به هم بزند. ببینید، ویژگی VerticalPosition تنها زمانی موثر است که جدول شما به گونهای پیکربندی شده باشد که به متن اجازه دهد تا دور آن بپیچد. (این در قسمت Table Wrapping در کادر محاورهای Table Properties پیکربندی شده است.) با تشخیص این موضوع، وقتی از ماکرو برای تنظیم ویژگی VerticalPosition استفاده میکنید، جدول به طور خودکار از "none" به "around" تغییر میکند. بدیهی است که اگر قبلاً بسته بندی را روشن نکرده بودید و جدول از ناحیه متن شما باریک تر باشد، این می تواند روی طرح بندی صفحه تأثیر بگذارد.
در اینجا "گوچا" بالقوه دیگری نیز وجود دارد. شاید فکر کنید که می توانید موقعیت افقی جدول را با تغییر خاصیت VerticalPosition در ماکرو بالا به HorizontalPosition تنظیم کنید. این منطقی به نظر می رسد، اما نحوه عملکرد آن در ماکرو ممکن است شما را به یک حلقه تبدیل کند. در جایی که با تنظیم ویژگی VerticalPosition، بسته بندی جدول از "none" به "around" تغییر می کند، تنظیم ویژگی HorizontalPosition این کار را انجام نخواهد داد. در عوض، در برخی از نسخه های Word، به شما خطا می دهد.
ایمن ترین راه برای مقابله با همه این موارد عجیب و غریب این است که ماکرو را تنظیم کنید تا مطمئن شوید که جدول را فقط در صورتی تنظیم می کند که ویژگی wrapping آن روی True تنظیم شده باشد، به این ترتیب:
Sub MoveTableUp2() Dim sTemp As Stringset pxl to the number of pixels to move: positive for down andnegative for up Const pxl As Single = -1 sTemp = "" If Selection.Information(wdWithInTable) Then With Selection.Tables(1).Rows If .WrapAroundText Then .VerticalPosition = .VerticalPosition + PixelsToPoints(pxl) Else sTemp = "Table is inline. No action taken." End If End With Else sTemp = "The insertion point is not within a table. No action taken." End If If sTemp > "" Then MsgBox sTemp End Sub
این تنوع ماکرو همچنین شامل بازخورد کمی بیشتر برای کاربر است تا در صورت عدم اقدام، به کاربر گفته شود که چرا اینطور است.
اگر ترجیح می دهید، می توانید جدول را هر بار یک نقطه (1/72 اینچ) حرکت دهید. در اینجا نسخه ای از ماکرو است که می تواند این حرکت را مدیریت کند:
Sub MoveTableUp3() Dim sTemp As Stringset pt to the number of points to move: positive for down andnegative for up Const pt As Single = -1 sTemp = "" If Selection.Information(wdWithInTable) Then With Selection.Tables(1).Rows If .WrapAroundText Then .VerticalPosition = .VerticalPosition + pt Else sTemp = "Table is inline. No action taken." End If End With Else sTemp = "The insertion point is not within a table. No action taken." End If If sTemp > "" Then MsgBox sTemp End Sub
همانطور که قبلاً بحث شد، هل دادن جدول به صورت افقی به جای عمودی صرفاً به دلیل استفاده از ویژگی HorizontalPosition با شی Rows به جای ویژگی VerticalPosition است. به یاد داشته باشید، اما، اخطارهای مورد بحث، همچنین در مورد اینکه چگونه ویژگی HorizontalPosition در استفاده از ویژگی VerticalPosition متفاوت است. با در نظر گرفتن این موضوع، می توانید به راحتی چهار نسخه از ماکرو خود را ایجاد کنید (برای هر یک از چهار جهتی که ممکن است بخواهید جدول خود را حرکت دهید) و سپس کلیدهای میانبر را به ماکروها اختصاص دهید.