مری در حال نوشتن یک ماکرو است که یک جدول را تقسیم می کند. کار بر روی جدول فعال مشکل چندانی نیست، اما او می خواهد اولین ردیف جدول فعال را کپی کند، سپس جدول را تقسیم کند و در نهایت ردیف کپی شده را در اولین ردیف جدول جدید ایجاد شده توسط تقسیم قرار دهد. برای اینکه این کار را به درستی انجام دهد، میخواهد اعداد شاخص استفاده شده توسط Word برای ارجاع به دو جدول در مجموعه جداول را تعیین کند. مری میخواهد بداند چگونه میتواند شماره فهرست جدول فعال (قبل از تقسیم) را پیدا کند تا بتواند به سادگی آن عدد را افزایش دهید تا عدد شاخص جدید جدول ایجاد شده پس از تقسیم را بدانید.
مدل شی Word بر سازماندهی اشیاء منفرد در مجموعههایی است که میتوان به صورت برنامهریزی به آنها دسترسی داشت. این نه تنها برای جداول، بلکه برای پاراگرافها، گرافیکها و تعداد زیادی از اشیاء دیگر صدق میکند. شما به راحتی میتوانید تعداد اشیاء یک مجموعه را با استفاده از برای مثال، می توانید از موارد زیر برای کشف تعداد جدول در یک سند استفاده کنید، زیرا تعداد اشیاء موجود در مجموعه جداول را برمی گرداند:
iNumTables = ActiveDocument.Tables.Count
پیدا کردن جدول فعلی کمی پیچیده تر است، اما می توان آن را انجام داد. ساده ترین راه این است که یک نشانک به جدول فعلی اضافه کنید و سپس تمام جداول موجود در سند را بررسی کنید تا ببینید کدام جدول حاوی آن نشانک است. هنگامی که متوجه شدید، می دانید جدول فعلی کدام است و می توانید نشانک را حذف کنید. ماکرو زیر این مراحل را اجرا می کند:
Sub FindTableNumber()
Dim J As Integer
Dim iTableNum As Integer
Dim oTbl As Table
Selection.Bookmarks.Add ("TempBM")
For J = 1 To ActiveDocument.Tables.Count
Set oTbl = ActiveDocument.Tables(J)
oTbl.Select
If Selection.Bookmarks.Exists("TempBM") Then
iTableNum = J
Exit For
End If
Next J
ActiveDocument.Bookmarks("TempBM").Select
ActiveDocument.Bookmarks("TempBM").Delete
MsgBox "The current table is table " & iTableNum
End Sub
برای استفاده از ماکرو، فقط مطمئن شوید که نقطه درج در جدول مورد نظر باشد. ماکرو را می توان به راحتی با یک زمینه بزرگتر، مانند جایی که جدول تقسیم می شود و در غیر این صورت دستکاری می شود، تطبیق داد.
با این حال، روش دیگری برای مدیریت برنامهریزی عمل زیربنایی که مری میخواهد انجام دهد وجود دارد - روشی که نیازی به استفاده از اعداد فهرست برای مجموعه جداول ندارد. میتوانید ردیف اول جدول را کپی کنید و سپس جدول را با استفاده از آن تقسیم کنید. دستوری شبیه به دستور زیر:
Selection.Tables(1).Split(5)
این دستور جدول را در ردیف 5 تقسیم می کند. شما به راحتی می توانید با تغییر ردیفی که در آن تقسیم شده است، نقطه تقسیم را تغییر دهید. سپس با استفاده از دستور زیر می توانید نقطه درج را به ابتدای جدول بعدی (جدول جدید ایجاد شده) منتقل کنید:
Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext
این دستور به ابتدای جدول بعدی میرود و سپس میتوانید ردیف سرصفحهای را که قبلاً کپی کردهاید جایگذاری کنید.