حسن رمضانی

اولین ماکرو: خودکار کردن کارهای تکراری در اکسل با VBA

حسن رمضانی · ۱۴۰۵/۰۷/۲۷ · ۲ دقیقه مطالعه

اگر کاری را هر روز یا هر ماه با همان ترتیب کلیک‌ها تکرار می‌کنی، احتمالاً می‌شود آن را به یک دکمه تبدیل کرد. زبان این کار در اکسل VBA است و لازم نیست برنامه‌نویس باشی تا اولین ماکروی مفیدت را بسازی.

آماده‌سازی

  1. از File ← Options ← Customize Ribbon تیک Developer را بزن.
  2. با Alt+F11 پنجرهٔ ویرایشگر VBA باز می‌شود.
  3. از منوی Insert گزینهٔ Module را بزن؛ کد این‌جا نوشته می‌شود.
  4. فایل را با پسوند .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 گرفت.

کار تکراری‌ات را به یک دکمه تبدیل کنم؟

برآورد رایگان است؛ فرم را پر کن تا تماس بگیرم.

سفارشآکادمی اکسلهمهٔ مقاله‌ها