اولین ماکرو: خودکار کردن کارهای تکراری در اکسل با VBA
اگر کاری را هر روز یا هر ماه با همان ترتیب کلیکها تکرار میکنی، احتمالاً میشود آن را به یک دکمه تبدیل کرد. زبان این کار در اکسل VBA است و لازم نیست برنامهنویس باشی تا اولین ماکروی مفیدت را بسازی.
آمادهسازی
- از File ← Options ← Customize Ribbon تیک Developer را بزن.
- با Alt+F11 پنجرهٔ ویرایشگر VBA باز میشود.
- از منوی Insert گزینهٔ Module را بزن؛ کد اینجا نوشته میشود.
- فایل را با پسوند .xlsm ذخیره کن؛ در
.xlsxماکرو ذخیره نمیشود.
یک ماکروی ساده
این ماکرو محدودهٔ دادههای برگهٔ Report را پاک میکند و تاریخ و ساعت اجرا را در H1 مینویسد:
Sub ClearReport()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Report")
ws.Range("A2:F1000").ClearContents
ws.Range("H1").Value = Now
End Sub
با F5 اجرا کن، یا از Developer ← Insert یک دکمه روی برگه بگذار و این ماکرو را به آن وصل کن.
یک ماکروی واقعی: جمعکردن برگههای شعبهها
فرض کن هر شعبه برگهٔ خودش را دارد با ستونهای یکسان (A تا F، ردیف اول عنوان) و میخواهی همه در برگهٔ Total زیر هم بیایند:
Sub MergeBranches()
Dim ws As Worksheet, dest As Worksheet
Dim lastRow As Long, nextRow As Long
Set dest = ThisWorkbook.Worksheets("Total")
dest.Range("A2:F100000").ClearContents
nextRow = 2
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> dest.Name Then
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
If lastRow >= 2 Then
ws.Range("A2:F" & lastRow).Copy dest.Cells(nextRow, "A")
nextRow = nextRow + lastRow - 1
End If
End If
Next ws
End Sub
چه میکند: برگهٔ Total را خالی میکند، بعد از هر برگهٔ دیگر آخرین ردیف پر ستون A را پیدا میکند و ردیفهای داده را زیر دادههای قبلی کپی میکند.
امنیت
اکسل ماکروهای فایلهایی را که از اینترنت یا ایمیل آمدهاند بهطور پیشفرض میبندد. فایل ماکرودار را فقط از منبع مطمئن باز کن و ماکرو را فقط وقتی فعال کن که میدانی چه میکند.
قدم بعد
بیشتر ماکروهای کاربردی حسابداری ترکیبی از همین چند کارند: پیدا کردن آخرین ردیف، حلقه روی برگهها یا فایلها، کپی و قالببندی، و ساختن خروجی PDF. با همین الگو میشود گزارشهای ماهانه را از چند فایل جمع کرد یا فیش حقوق همه را یکجا PDF گرفت.
کار تکراریات را به یک دکمه تبدیل کنم؟
برآورد رایگان است؛ فرم را پر کن تا تماس بگیرم.