ضبط کنید، بخوانید، تمیز کنید
هر کاری که هر هفته با همان ترتیب کلیکها انجام میدهید — قالببندی خروجی نرمافزار حسابداری، حذف ستونهای اضافه، راستچین کردن شیت — کاندیدای ماکرو است. ماکرو در اکسل دسکتاپ با زبان VBA نوشته میشود و سادهترین راه شروع، ضبط کردن است.
آمادهسازی و ضبط
- تب Developer: File ← Options ← Customize Ribbon ← تیک Developer.
- Developer ← Record Macro: نام بدون فاصله (FormatReport)، کلید میانبر با Shift (Ctrl+Shift+R) تا میانبرهای اصلی مثل Ctrl+C از کار نیفتند، و محل ذخیره.
- محل ذخیرهی Personal Macro Workbook ماکرو را در فایل پنهان PERSONAL.XLSB میگذارد که با هر بار اجرای اکسل بارگذاری میشود؛ برای ابزارهای شخصی که روی همهی فایلها لازم دارید.
- دکمهی Use Relative References را پیش از ضبط روشن کنید اگر ماکرو باید از سلول فعال شروع کند، نه همیشه از A1.
کد ضبطشده در برابر کد تمیز
Alt+F11 ویرایشگر VBA را باز میکند. ضبطکننده هر کلیک را با Select ثبت میکند:
' Recorded
Sub FormatReport()
Columns("C:C").Select
Selection.Delete Shift:=xlToLeft
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Font.Bold = True
Range("E2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.NumberFormat = "#,##0"
End Sub
' Cleaned: no Select, faster and independent of the cursor
Sub FormatReport2()
Dim ws As Worksheet, lastRow As Long
Set ws = ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
ws.Columns("C").Delete
With ws.Range("A1", ws.Cells(1, ws.Columns.Count).End(xlToLeft))
.Font.Bold = True
.Interior.Color = RGB(221, 235, 247)
End With
ws.Range("E2:E" & lastRow).NumberFormat = "#,##0"
ws.DisplayRightToLeft = True
End Sub
قاعدهی طلایی: Select و Selection را حذف کنید و مستقیم با شیء کار کنید؛ کد سریعتر، خواناتر و مستقل از جای کرسر میشود. یافتن آخرین سطر با End(xlUp) از پایین شیت، از End(xlDown) مطمئنتر است، چون با یک سلول خالی وسط داده متوقف نمیشود.
فرمت فایل
| پسوند | ماکرو | توضیح |
|---|---|---|
| .xlsx | ندارد | ذخیرهی فایل ماکرودار با این پسوند، پس از یک هشدار، کدها را حذف میکند |
| .xlsm | دارد | فرمت استاندارد فایل ماکرودار |
| .xlsb | دارد | باینری؛ کوچکتر و سریعتر برای فایلهای بزرگ |
| .xlam | دارد | Add-in؛ ابزار شما در همهی فایلها بدون باز کردن کارپوشه |
امنیت ماکرو
ماکرو میتواند هر کاری در سیستم انجام دهد: حذف فایل، ارسال ایمیل، دانلود بدافزار. به همین دلیل Trust Center ← Macro Settings بهطور پیشفرض روی «Disable with notification» است. مایکروسافت ماکروی فایلهایی را که از اینترنت یا پیوست ایمیل آمدهاند (دارای نشان Mark of the Web) کاملاً مسدود میکند و حتی دکمهی Enable هم نمایش داده نمیشود. برای فایلی که از منبعش مطمئنید: در ویندوز راستکلیک روی فایل ← Properties ← تیک Unblock، یا قرار دادن آن در یک Trusted Location. فایل ماکرودار از فرستندهی ناشناس را هرگز فعال نکنید.
نکتههایی که کمتر کسی میداند
- اجرای ماکرو تاریخچهی Undo را پاک میکند؛ پیش از اجرای ماکرویی که داده را تغییر میدهد، فایل را ذخیره کنید.
- PERSONAL.XLSB پس از ضبط اولین ماکرو در پوشهی XLSTART ساخته میشود؛ هنگام بستن اکسل که میپرسد ذخیره شود یا نه، Save بزنید وگرنه ماکرو گم میشود.
- در VBE با F8 خطبهخط اجرا کنید و با Ctrl+G پنجرهی Immediate را باز کنید؛
?Selection.Addressیا?ActiveCell.Valueدر آن فوراً جواب میدهد. - Tools ← Options ← Require Variable Declaration را روشن کنید تا Option Explicit خودکار بالای هر ماژول بیاید؛ غلط تایپی در نام متغیر دیگر بیصدا یک متغیر خالی جدید نمیسازد.
- برای وصل کردن ماکرو به دکمه، Developer ← Insert ← Form Controls ← Button را به ActiveX ترجیح دهید؛ کنترلهای ActiveX با تغییر DPI مانیتور یا بهروزرسانی آفیس گاهی خراب میشوند.