راس سعی می کند یک ماکرو بنویسد تا یک کادر متنی را در اطراف متن انتخاب شده قرار دهد (آن قسمت کار می کند) و سپس کادر را با پس زمینه شفاف، حاشیه شفاف و شناور در جلوی متن قالب بندی کند. متأسفانه ضبط کننده ماکرو چیزی جز درج کادر متنی ضبط نمی کند و راس نمی تواند دستوری را برای انجام سایر مراحل انجام دهد. او متعجب است که چگونه کلان را آنطور که دوست دارد کار کند.
ضبط ماکرو برای شروع کار با ماکروها به طور کلی یا برای استفاده در ماکروهای کوتاه فردی مفید است. کارهای بسیار بسیار زیادی وجود دارد که نمی توان با ضبط کننده ماکرو انجام داد، و لازم است ماکرو اولیه ضبط شده خود را بردارید، آن را در ویرایشگر VB بکشید و تغییراتی در آن ایجاد کنید تا آنچه را که می خواهید انجام دهد.
اگر مراحلی را که راس در درخواست خود بیان می کند دنبال کنم (متنی را انتخاب کنید، ضبط کننده ماکرو را روشن کنید، کادر متن را وارد کنید، آن را همانطور که توضیح داده شد قالب بندی کنید)، این چیزی است که ایجاد می کند:
Sub MyBox
"
" MyBox Macro
"
"
Selection.CreateTextbox
End Sub
بسیار ساده - خطی که یک کادر متنی در اطراف انتخاب ایجاد می کند. هیچ یک از مراحل قالب بندی بعدی که من انجام دادم ضبط نشد، بنابراین اینجاست که نیاز به کدنویسی دستی در ویرایشگر VB مطرح می شود. برای اینکه ماکرو قالب بندی را انجام دهد، تنها کاری که باید انجام دهید این است که پس از ایجاد کادر متن، دستورات VBA مناسب را اضافه کنید تا این کار انجام شود:
Sub MyBox()
"
" MyBox Macro
"
"
Selection.CreateTextbox
Selection.ShapeRange(1).WrapFormat.Type = wdWrapFront
Selection.ShapeRange(1).Line.Transparency = 1
Selection.ShapeRange(1).Fill.Transparency = 1
Selection.Font.ColorIndex = wdBlack
End Sub
به شرطی که ابتدا متنی را انتخاب کنید، این ماکرو یک کادر متنی ایجاد می کند که حاوی آن متن است و سپس آن را همانطور که راس می خواست قالب بندی می کند.
اگر ابتدا متن را انتخاب نکنید، هنگام اجرای ماکرو با خطا مواجه خواهید شد. در صورت تمایل میتوانید ماکرو را به گونهای تقویت کنید که بررسی کند که آیا انتخابی انجام شده است یا خیر. موارد زیر این کار را انجام می دهد و همچنین کد را کمی فشرده می کند:
Sub MyBox()
"
" MyBox Macro
"
"
If Selection.Type <> wdSelectionIP Then
With Selection
.CreateTextbox
.ShapeRange(1).WrapFormat.Type = wdWrapFront
.ShapeRange(1).Line.Transparency = 1
.ShapeRange(1).Fill.Transparency = 1
.Font.ColorIndex = wdBlack
End With
Else
MsgBox "No text selected!"
End If
End Sub
اگر قالببندی دیگری وجود دارد که میخواهید انجام دهید - مانند تغییر ابعاد جعبه متن - میتوانید آن اطلاعات را در ماکرو نیز اضافه کنید. به سادگی خطوطی را اضافه کنید که ویژگی های .Height و ..Width شی ShapeRange را تنظیم می کند.
باز هم، این نوع کار با ماکروها را فقط می توان با نوشتن یا ویرایش دستی آنها انجام داد تا دقیقاً همان چیزی را که می خواهید به دست آورید - کاری که نمی توان با ضبط کننده ماکرو انجام داد.