یکی از نکات جالب در مورد برنامه نویسی ماکروهای VBA این است که زبان شی گرا است. این بدان معنی است که شما می توانید با استفاده از اشیاء و مجموعه ای از اشیاء به هر قسمت از سند خود دسترسی داشته باشید. به عبارت دیگر، شما می توانید پاراگراف ها را بدون نیاز به انتخاب آنها دستکاری کنید.
به عنوان مثال، فرض کنید میخواهید به هر پاراگراف یک سند به نوبه خود دسترسی داشته باشید و روی متن آن پاراگراف پردازش کنید. از آنجایی که هر پاراگراف یک شی مجزا در سند است، این کار نسبتاً آسان است. اشیاء پاراگراف به عنوان بخشی از مجموعه پاراگراف قابل دسترسی هستند. کد زیر این کار را انجام می دهد:
iParCount = ActiveDocument.Paragraphs.Count
For J = 1 To iParCount
sMyPar = ActiveDocument.Paragraphs(J).Range.Text
[Add processing comments to manipulate sMyPar]
ActiveDocument.Paragraphs(J).Range.Text = sMyPar
Next J
خط اول کد iParCount را برابر با تعداد پاراگراف های سند فعلی تنظیم می کند. حلقه ای که از خط دوم شروع می شود سپس کار اصلی را در ماکرو انجام می دهد. خط سوم رشته sMyPar را برابر با متن داخل پاراگراف مشخص شده قرار می دهد. (وقتی J برابر با 1 است، شما با پاراگراف اول کار می کنید. وقتی J برابر با 2 باشد، پاراگراف دوم است و غیره.)
پس از اتمام پردازش sMyPar، خط بعدی متن سند را برابر با متن اصلاح شده در رشته sMyPar قرار می دهد.
با این حال، کد بالا زمان زیادی برای اجرا نیاز دارد. همانطور که در اینجا نشان داده شده است، دسترسی به مجموعه پاراگراف ها با استفاده از یک حلقه For Every سریعتر است:
For Each p In ActiveDocument.Paragraphs
sMyPar = p.Range.Text
[Add processing comments to manipulate sMyPar]
p.Range.Text = sMyPar
Next p
اگر فقط پاراگراف ها را تغییر دهید در صورتی که پردازش شما نشان می دهد که تغییر ضروری است، می توانید کد خود را سریع تر کنید.