10 کد رایگان ماکرو برای خودکارسازی کارهای روزمره

نحوه اجرای کدهای ماکرو  VBA در اکسل  

اجرای کد ماکرو VBA در اکسل شامل چند مرحله است. در زیر مراحل اصلی برای ایجاد و اجرای یک ماکرو در اکسل آورده شده است:

 

۱. فعال‌سازی افزونه Developer

به تب "File" بروید.

گزینه "Options" را انتخاب کنید.

در پنجره "Excel Options"، گزینه "Customize Ribbon" را انتخاب کنید.

تیک "Developer" را بزنید و سپس "OK" کنید.

 

 ۲. ایجاد و اجرای ماکرو

در سربرگ اکسل به تب "Developer" بروید.

روی گزینه " Macro" کلیک کنید.

یک نام برای ماکرو انتخاب کنید و روی "Create" کلیک کنید.

توضیحات را وارد کنید (اختیای) و روی "OK" کلیک کنید.

در ماژول باز شده کد رایگان را وارد می کنید و سپس روی "Run" در سربرگ صفحه VBAProject کلیک کنید.

 

  3. ویرایش ماکرو

اگر بخواهید ماکرو را ویرایش کنید:

به تب "Developer" بروید.

روی "Macros" کلیک کنید.

ماکرو موردنظر را انتخاب کنید و روی "Edit" کلیک کنید.

ویرایش‌های لازم را در محیط Visual Basic for Applications (VBA) انجام دهید و سپس فایل را ذخیره کنید.

 

 4. ذخیره‌سازی فایل با ماکرو

برای ذخیره فایل‌هایی که شامل ماکرو هستند:

به تب "File" در سربرگ صفحه اکسل بروید.

روی "Save As" کلیک کنید.

در قسمت "Save as type"، گزینه "Excel Macro-Enabled Workbook (*.xlsm)" را انتخاب کنید و فایل را ذخیره کنید.

 

فهرست ماکروها

  1. آشکار کردن سطرها بر اساس مقادیر یا متن خاص
  2. لغو ادغام سلول‌ها
  3. رنگی کردن سلول‌های ادغام شده
  4. حذف ردیف‌های خالی
  5. اضافه کردن یک ردیف بعد از هر ردیف
  6. رنگی کردن سلولهای با مقادیر تکراری در یک ستون
  7. حذف همه فیلترها از همه شیتها
  8. حذف فرمولها و حفظ مقادیر
  9. استخراج لینک‌های سلول‌ها
  10. معکوس کردن داده‌ها در یک ستون

 

کدهای رایگان ماکرو VBA 

  1. سطرها را بر اساس مقادیر یا متن خاص آشکار کنید.

ماکروی زیر در شیت Sheet1 ردیفهای مربوط به سلولهای A1 تا A10 که دارای متن Excell هستند را آشکار می‌کند.

Sub UnhideRowsBasedOnText()

    Dim ws As Worksheet

    Dim cell As Range

    Dim targetRange As Range

   

    ' Initialize the worksheet object

    Set ws = ThisWorkbook.Sheets("Sheet1")

   

    ' Define the target range to loop through

    Set targetRange = ws.Range("A1:A10")

   

    ' Loop through each cell in the target range

    For Each cell In targetRange

        'Check if the cell value contains the text "Excel"

        If cell.Value = "Excel" Then

            'Unhide the entire row containing this cell

            cell.EntireRow.Hidden = False

        End If

    Next cell

End Sub

 

ماکروی بالا طبق توضیحات آن در چهار مرحله تعریف متغیرها، تعریف کاربرگ یا شیت هدف، تعریف رنج

سلول‌های هدف در شیت هدف و تعریف گزاره شرطی if در حلقه سلول‌های هدف کاربرگ هدف اجرا می‌گردد.

  1. لغو ادغام Unmerge سلولها

Sub UnmergeAllCells()

    Dim ws As Worksheet

   

    ' Initialize the worksheet object

    Set ws = ThisWorkbook.Sheets("Sheet1")

   

    ' Unmerge all merged cells in the worksheet

    ws.Cells.UnMerge

End Sub

در این ماکرو ابتدا Sheet1 به عنوان شیت هدف انتخاب و سپس کلیه سلولهای این در صورتی که ادغام هستند، از حالت ادغام خارج می‌شوند.

  1. رنگی کردن تمام سلول‌های ادغام شده:

Sub HighlightMergedCells()

    Dim ws As Worksheet

    Dim cell As Range

   

    ' Set ws as the active worksheet

    Set ws = ThisWorkbook.Sheets("Sheet1")

   

    ' Loop through all cells in the used range of the worksheet

    For Each cell In ws.UsedRange

        'Check if the cell is merged

        If cell.MergeCells Then

            'If merged, set the background color to yellow

            cell.Interior.Color = RGB(255, 255, 0)

        End If

    Next cell

End Sub

این ماکرو طبق توضیحات در سه مرحله تعریف متغیرها، تعریف شیت هدف و استفاده از دستور شرطی if

در یک حلقه که بررسی می‌کند آیا سلولها ادغام هستند یا خیر؟ و در صورتی که جواب مثبت باشد،

سلول‌های ادغام شده با رنگ قرمز پر می‌شوند اجرا می‌شود.

  1. حذف ردیفهای خالی:

Sub DeleteBlankRows()

    Dim ws As Worksheet

    Dim lastRow As Long

    Dim i As Long

   

    ' Set ws to the active worksheet

    Set ws = ActiveSheet

   

    ' Find the last row with data in the worksheet

    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

   

    ' Loop from the last row to the first row

    For i = lastRow To 1 Step -1

        'If the entire row is empty, delete it

        If Application.CountA(ws.Rows(i)) = 0 Then

            ws.Rows(i).Delete

        End If

    Next i

End Sub

مراحل زیر در ماکروی بالا بترتیب اجرا می‌شود:

  • تعریف متغیرها.
  • انتخاب شیت فعال به‌عنوان شیت هدف.
  • پیدا نمودن آخرین ردیف شیت و اختصاص عدد مربوط به آن به متغیر A
  • تشخیص ردیف‌های خالی با CountA.
  • حذف ردیف‌ها خالی.
  1. اضافه نمودن یک ردیف بعد از هر ردیف:

Sub InsertRowAfterEveryOtherRow()

    Dim ws As Worksheet

    Dim lastRow As Long

    Dim i As Long

   

    ' Set ws to the active worksheet

    Set ws = ActiveSheet

   

    ' Find the last row with data in the worksheet

    lastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row

   

    ' Loop from the last row towards the first, moving in steps of 1

    For i = lastRow To 1 Step -1

        ' Insert a new row after each row we visit

        ws.Rows(i + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

    Next i

End Sub

این ماکرو طی مراحل زیر اجرا می‌گردد:

  • تعریف متغیرها.
  • انتخاب شیت فعال به‌عنوان شیت هدف ماکرو.
  • اختصاص شماره آخرین ردیف شیت به متغیر A.
  • اضافه شدن یک ردیف بعد از هر ردیف. 
  1. رنگی کردن سلولهای با مقادیر تکراری در یک ستون:

Sub HighlightDuplicateValues()

    Dim myRange As Range

    Dim myCell As Range

   

    ' Set myRange to the user's selected range

    Set myRange = Selection

   

    ' Loop through each cell in the selected range

    For Each myCell In myRange

        'Use CountIf function to find duplicates within the range

        If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then

            'Highlight the cell with ColorIndex 36 (light green)

            myCell.Interior.Color = vbYellow

        End If

    Next myCell

End Sub

مراحل اجرایی این ماکرو به‌قرار زیر می‌باشد:

  • انتخاب متغیرها.
  • انتخاب سلول‌های انتخاب شده به‌عنوان رنج عمل ماکرو.
  • تابع  WorksheetFunction.CountIf تعداد تکرار هر سلول را شمارش می‌کند.
  • اگر تعداد تکرار بیشتر از یک باشد با vbYellow، سلول را به رنگ زرد درمی‌آورد.
  1. حذف همه فیلترها از همه شیتها:

 

Sub ResetAllFilters()

    Dim ws As Worksheet

   

    ' Loop through each worksheet in the active workbook

    For Each ws In ThisWorkbook.Worksheets

        ' Check if the sheet has autofilters enabled

        If ws.AutoFilterMode= True Then

            ' Clear the autofilters

            ws.AutoFilterMode = False

        End If

    Next ws

End Sub

مراحل ماکرو به‌ترتیب زیر اجرا می‌گردد:

  • تعریف متغیر.
  • چک کردن وجود فیلترها در هر شیت.
  • در صورتی که جواب مثبت است، فیلتر غیرفعال می‌گردد.
  1. حذف فرمولها و حفظ مقادیر:

Sub ConvertFormulasToValues()

    Dim cell As Range

    Dim selectedRange As Range

   

    ' Set selectedRange to the user's selected range

    Set selectedRange = Selection

   

    ' Loop through each cell in the selected range

    For Each cell In selectedRange

        ' Check if the cell has a formula

        If cell.HasFormula= True Then

            ' Replace the formula with its value

            cell.Value = cell.Value

        End If

    Next cell

End Sub

این ماکرو مراحل زیر را اجرا می‌کند:

  • تعریف متغیرها.
  • انتخاب سلولهای انتخاب شده به‌عنوان رنج اجرای ماکرو.
  • چک کردن این‌که آیا سلولها دارای فرمول می‌باشند یا خیر؟
  • اگر جواب شرط مثبت است، جایگزینی نتیجه فرمول به‌جای فرمول در سلول.
  1. استخراج لینک‌های سلول‌ها:

 

Sub ExtractURLsFromHyperlinks()

    Dim cell As Range

    Dim selectedRange As Range

    Dim hyperlinkAddress As String

   

    ' Set selectedRange to the user's selected range

    Set selectedRange = Selection

   

    ' Loop through each cell in the selected range

    For Each cell In selectedRange

        ' Check if the cell contains a hyperlink

        If cell.Hyperlinks.Count > 0 Then

            ' Get the URL of the first hyperlink in the cell

            hyperlinkAddress = cell.Hyperlinks(1).Address

            ' Write the URL to the adjacent cell in the next column

            cell.Offset(0, 1).Value = hyperlinkAddress

        End If

    Next cell

End Sub

مراحل اجرایی ماکرو:

 

  • تعریف متغیرها.
  • انتخاب سلولهای انتخاب شده به‌عنوان رنج اجرای ماکرو.
  • چک کردن این‌که آیا سلولها دارای بیش از صفر لینک هستند؟
  • اگر جواب شرط مثبت است، استخراج آدرس لینک.
  • قراردادن آدرس لینک هر سلول در سلول سمت راست آن.
  1. قراردادن مقادیر سلول‌ها با ردیف i و ستون j در سلول‌های با ردیف j و ستون i

Sub FlipDataInColumn()

    Dim selectedRange As Range

    Dim dataArr() As Variant

    Dim i As Long, j As Long

   

    ' Set selectedRange to the user's selected range

    Set selectedRange = Selection

    j = selectedRange.Rows.Count

   

    ' Load the data into an array

    dataArr = selectedRange.Value

   

    ' Loop through the array and swap values to flip the data

    For i = 1 To j / 2

        temp = dataArr(i, 1)

        dataArr(i, 1) = dataArr(j, 1)

        dataArr(j, 1) = temp

        j = j - 1

    Next i

   

    ' Write the flipped data back to the column

    selectedRange.Value = dataArr

End Sub

ماکروی زیر به‌ترتیب در مراحل زیر اجرا می‌گردد:

 

  • تعریف متغیرها.
  • انتخاب سلولهای انتخاب شده به‌عنوان رنج اجرای ماکرو.
  • قراردادن مقادیر سلول‌های انتخاب شده در یک ماتریس.
  • کد از طریق آرایه حلقه می زند و مقادیر را از بالا و پایین مبادله می کند و به سمت وسط حرکت می کند
  • عملاً داده ها را معکوس می کند.
  • داده‌های معکوس شده جاگذاری می‌شود.