در خط کاری من، باید اسنادی ایجاد کنم که شامل جداول زیادی باشد. این جداول باید از ساختار سفت و سخت پیروی کنند، از جمله این الزام که هیچ سلولی نمی تواند خالی باشد. (اگر سلولی در غیر این صورت خالی باشد، باید دارای کاراکترهای "N/A" باشد.)
برای کمک به کار با این نیاز برای جداول، یک ماکرو ایجاد کردم که جدول را برای من بررسی می کند و در صورت لزوم کاراکترهای N/A را اضافه می کند. تنها کاری که باید انجام دهم این است که نقطه درج را در جدول هدف قرار داده و سپس این ماکرو را اجرا کنید:
Sub AddTableNA()
Dim NumRows As Integer
Dim NumCols As Integer
Dim J As Integer
Dim K As Integer
Dim ChkTxt As String
If Not Selection.Information(wdWithInTable) Then
Exit Sub
End If
NumRows = Selection.Tables(1).Rows.Count
NumCols = Selection.Tables(1).Columns.Count
"Loop to select each row in the current table
For J = 1 To NumRows
"Loop to select each cell in the current row
For K = 1 To NumCols
"Select the cell to check
Selection.Tables(1).Rows(J).Cells(K).Select
"Copy any text in the cell
ChkTxt = Selection.Text
"Strip off the last 2 characters (removes end of cell marker)
ChkTxt = Left(ChkTxt, Len(ChkTxt) - 2)
"If empty, add "n/a" text
If (ChkTxt = "") Then Selection.TypeText ("N/A")
Next K
Next J
End Sub
ماکرو ابتدا بررسی می کند که آیا نقطه درج در یک جدول است یا خیر. اگر نه، پس از ماکرو زودتر خارج می شود. اگر چنین است، متغیرهای NumRows و NumCols به ترتیب روی تعداد ردیفها و ستونهای جدول تنظیم میشوند.
سپس ماکرو از هر سلول هر ردیف عبور می کند و تعیین می کند که سلول حاوی چیزی است یا خیر. به دلیل روشی که Word جداول را می سازد، یک سلول همیشه حاوی چیزی است - نشانگر انتهای سلول - حتی اگر چیز دیگری در آن نباشد. راه حل این بود که دو کاراکتر از انتهای متن در سلول کم کنید و سپس ببینید چیزی باقی مانده است یا خیر. اگر نه، کاراکترهای "N/A" در سلول تایپ می شوند.