نرم افزار اکسل از نرم افزارهای بسیار کاربردی و فراگیر در سطح جهان است که با استفاده از قابلیت ماکرونویسی می توان اجرای فرآیندهای ساده و پیچیده در آن را خودکار نموده و زمان انجام کار را به میزان قابل توجهی کاهش داد در این مقاله ده دور کد کاربردی و رایگان ماکرو در اکسل ارائه می شود.
عناوین کدها
درج متن/مقدار در سلول
نمایش جعبه پیام
اعمال یک رنگ روی یک سلول
ایجاد کاربرگ یا شیت جدید
کپی دادهها و جایگذاری
پنهان و آشکارکردن یک ردیف خاص از یک کاربرگ خاص
فعال کردن یک کاربرگ خاص
ایجاد یک کتاب کار یا یک فایل جدید اکسل با نام و محل خاص
حذف محتوای یک سلول
مخفی کردن سلولهای با متن خاص یا مقدار عددی کمتر از یک مقدار خاص
توضیحات کدها
Sub InsertTextinCell()
' Target the cell "C1" in the active worksheet
Range("C1").Value = "Excel is Awesome"
End Sub
این ماکرو در سلول C1 عبارت Excel is Awesome را قرار میدهد. در این ماکرو از عبارت Range استفاده شده به جای آن میتوان از عبارت Cells استفاده نمود. ماکرو زیر همان کار بالا را با عبارت Cells انجام میدهد.
Sub InsertTextinCell ()
' Target the cell in row 1 and column 1 (A1) in the active worksheet
Cells(1, 3).Value = "Excel is Awesome"
End Sub
در ماکرو بالا آدرس سلول که در پرانتز قرار میگیرد، ابتدا شماره ردیف Row و سپس شماره ستون Column قرار میگیرد. دقت نمایید خطوطی از ماکرو که با ' شروع میشود، اجرا نمیشود و جملاتی است که نویسنده به عنوان توضیح برای خود یا خواننده مینویسد.
Sub ShowMessageBox()
' MsgBox function to show a message box with specified text
MsgBox "This is a Message Box"
End Sub
پس از اجرای ماکروی بالا، جعبه پیام با عبارت This is a Message Box ظاهر میگردد. با کلیک بر روی ok، جعبه پیام بسته میشود.
ماکروی زیر رنگ سلول A1 را به رنگ قرمز درمیآورد.
Sub ApplyColortoCell()
Range("A1").Interior.Color = RGB(255, 255, 0)
End Sub
Sub AddNewWorksheet()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
ws.Name = "NewSheet"
End Sub
در ماکرو بالا کاربرگ جدیدی با نام NewSheet در آخر شیتهای اکسل ایجاد میگردد.
Sub CopyAndPasteInSameWorksheet()
' Declare a variable to represent the worksheet
Dim ws As Worksheet
' Set the worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
' Copy data from Range A1:A10
ws.Range("A1:A10").Copy
' Paste data to Range B1:B10
ws.Range("B1:B10").PasteSpecial Paste:=xlPasteAll
' Clear Clipboard to remove the "marching ants" around copied area
Application.CutCopyMode = False
End Sub
این ماکرو دادههای A1 تا A10 را کپی و در سلولهای B1 تا B10 جایگذاری میکند.
همانگونه که توضیحات ماکرو را مشاهده میفرمایید، این ماکرو در پنج مرحله انتخاب کاربرگ، کپی دادهها، جایگذاری دادهها و حذف کپیها از Clipboard انجام میشود. xlPasteAll مشخص میکند که همه چیز از محدوده منبع ازجمله مقادیر، قالببندی و فرمولها همانند منبع، در محدوده مقصد جایگذاری شود.
ماکروی نمونه زیر برای پنهان کردن ردیف 5 در کاربرگ Sheet1 بکار میرود:
Sub HideRow()
' Declare a variable to represent the worksheet
Dim ws As Worksheet
' Set the worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
' Hide Row 5
ws.Rows(5).Hidden = True
End Sub
ماکروی نمونه زیر هم برای آشکار کردن ردیف پنهان شده ماکروی بالا بکار میرود:
Sub UnhideRow()
' Declare a variable to represent the worksheet
Dim ws As Worksheet
' Set the worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
' Unhide Row 5
ws.Rows(5).Hidden = False
End Sub
در ماکروی زیر کاربرگ Sheet2 فعال میشود.
Sub ActivateWorksheet()
' Declare a variable to represent the workbook
Dim wb As Workbook
' Set the workbook
Set wb = ThisWorkbook
' Activate the worksheet named "Sheet2"
wb.Worksheets("Sheet2").Activate
End Sub
Sub OpenNewWorkbook()
' Declare a variable to represent the new workbook
Dim newWb As Workbook
' Create a new workbook and assign it to the variable
Set newWb = Workbooks.Add
' Optionally, you can set the name of the new workbook
newWb.SaveAs "C:\Path\To\Your\NewWorkbook.xlsx"
End Sub
همانگونه که در توضیحات میبینید، این ماکرو در سه مرحله تعریف متغیر کتاب کار، ایجاد کتاب کار و تعیین نام و محل ذخیره فایل کتاب کار یا اکسل جدید اجرا میگردد.
ماکروی زیر محتوای سلول A1 کاربرگ Sheet1 را حذف میکند.
Sub DeleteCellContent()
' Declare a variable to represent the worksheet
Dim ws As Worksheet
' Set the worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
' Clear the content of cell A1
ws.Range("A1").Clear
End Sub
همانگونه که توضیحات را مشاهده میفرمایید، این ماکرو در سه مرحله تعریف متغیر کاربرگ، تعیین کاربرگ هدف ماکرو و حذف سلول A1 کاربرگ هدف اجرا میگردد.
ماکروی زیر در کاربرگ Sheet1 ردیفهای دارای سلولهایی که دارای متن Excell هستند را مخفی میکند:
Sub HideRowsBasedOnText()
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
'Hide the entire row containing this cell
cell.EntireRow.Hidden = True
Else
'Unhide the row if the condition is not met
cell.EntireRow.Hidden = False
End If
Next cell
End Sub
این ماکرو طبق توضیحات آن در چهار مرحله تعریف متغیرها، تعریف کاربرگ یا شیت هدف، تعریف رنج سلولهای هدف در شیت هدف و تعریف گزاره شرطی if در حلقه سلولهای هدف کاربرگ هدف اجرا میگردد.
ماکروی زیر در کاربرگ Sheet1 ردیفهای دارای سلولهایی که دارای عدد کمتر از 10 هستند را مخفی میکند:
Sub HideRowsBasedOnValue()
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")
' Start looping through each cell in the target range
For Each cell In targetRange
' Check if the cell value is less than 10
If cell.Value < 10 Then
'Hide the entire row containing this cell
cell.EntireRow.Hidden = True
Else
'Unhide the row if the condition is not met
cell.EntireRow.Hidden = False
End If
Next cell
End Sub
سه مرحله این ماکرو مشابه ماکروی قبلی بوده و در مرحله آخر، با استفاده از گزاره شرطی if و شرط اعداد کوچکتر از 10، این سلولها مخفی میشوند.