آموزش vba در اکسل از 0 تا 100 و دستورات و نکات کاربردی

رتبه: 5 ار 1 رای SSSSS
وی بی ای اکسل

VBA زبان برنامه‌نویسی داخلی اکسل است و برای خودکارکردن کارهای تکراری، ساخت دکمه، پردازش اطلاعات و ایجاد توابع اختصاصی استفاده می‌شود. برای مثال می‌توان صدها ردیف را با یک کلیک مرتب، قالب‌بندی یا به فایل‌های جدا تبدیل کرد.

VBA عمدتاً در نسخه دسکتاپ Excel اجرا می‌شود و فایل حاوی ماکرو باید با فرمت xlsm ذخیره شود.

فعال‌کردن زبانه Developer

  1. وارد File > Options > Customize Ribbon شوید.
  2. گزینه Developer را فعال کنید.
  3. روی OK بزنید.

برای ورود سریع به محیط کدنویسی، کلیدهای زیر را فشار دهید:

Alt + F11

در محیط VBA از مسیر Insert > Module یک ماژول جدید بسازید.

فعال کردن vba اکسل

اولین ماکرو

کد زیر را داخل Module قرار دهید:

Sub HelloMessage()
    MsgBox "سلام! ماکرو با موفقیت اجرا شد."
End Sub

برای اجرا نشانگر را داخل کد قرار داده و F5 را بزنید. از داخل اکسل نیز می‌توانید Alt+F8 را فشار دهید، نام ماکرو را انتخاب کرده و Run را بزنید.

هر ماکرو با Sub شروع و با End Sub تمام می‌شود.

ضبط ماکرو بدون کدنویسی

از مسیر Developer > Record Macro ضبط را شروع کنید، چند عملیات مانند رنگ‌کردن سلول یا تنظیم عرض ستون را انجام دهید و سپس Stop Recording را بزنید.

اکسل این عملیات را به کد VBA تبدیل می‌کند. با Alt+F11 می‌توانید کد ساخته‌شده را ببینید و تغییر دهید. ضبط ماکرو برای یادگیری دستورات بسیار مفید است، اما کد تولیدشده معمولاً نیاز به ساده‌سازی دارد.

کار با سلول‌ها

مقداردهی به یک سلول:

Range("A1").Value = "نام محصول"

خواندن مقدار سلول:

MsgBox Range("A1").Value

استفاده از شماره سطر و ستون:

Cells(2, 3).Value = 500

این دستور مقدار 500 را در سلول C2 قرار می‌دهد.

کار با چند سلول:

Range("A1:C10").Font.Bold = True
Range("A1:C10").Interior.Color = RGB(220, 240, 255)
image (1)


تعیین شیت و فایل

بهتر است شیت را دقیق مشخص کنید تا کد روی صفحه اشتباه اجرا نشود:

Worksheets("فروش").Range("A1").Value = "گزارش فروش"

روش منظم‌تر:

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("فروش")

ws.Range("A1").Value = "گزارش فروش"

ThisWorkbook یعنی فایلی که کد VBA داخل آن قرار دارد. ActiveWorkbook فایل فعال را نشان می‌دهد و ممکن است فایل دیگری باشد.

متغیرها

متغیر برای نگهداری موقت اطلاعات استفاده می‌شود:

Dim productName As String
Dim price As Double
Dim count As Long
Dim isAvailable As Boolean

productName = "لپ‌تاپ"
price = 45000000
count = 3
isAvailable = True

برای مجبورکردن VBA به تعریف متغیرها، این دستور را ابتدای ماژول قرار دهید:

Option Explicit

این کار بسیاری از اشتباهات تایپی را قبل از اجرا مشخص می‌کند.

شرط‌ها

Sub CheckScore()

    Dim score As Double
    score = Range("A2").Value

    If score >= 90 Then
        Range("B2").Value = "عالی"
    ElseIf score >= 60 Then
        Range("B2").Value = "قبول"
    Else
        Range("B2").Value = "مردود"
    End If

End Sub

چرب زبان

با این آموزش اکسل صفر تا صد اکسل، رو توی کمترین زمان ممکن یاد بگیر.بهترین پک آموزش اکسل در ایران همین الان خرید و دانلود کنید!

این کد نمره سلول A2 را بررسی و نتیجه را در B2 می‌نویسد.

image

حلقه‌ها

برای انجام یک عملیات روی چند ردیف از حلقه استفاده کنید:

Sub CalculateTotal()

    Dim rowNumber As Long

    For rowNumber = 2 To 10
        Cells(rowNumber, 3).Value = _
            Cells(rowNumber, 1).Value * Cells(rowNumber, 2).Value
    Next rowNumber

End Sub

این کد مقدار ستون A را در ستون B ضرب کرده و نتیجه را در ستون C قرار می‌دهد.

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

Dim cell As Range

For Each cell In Selection
    cell.Value = Trim(cell.Value)
Next cell

تابع Trim فاصله‌های اضافی ابتدا و انتهای متن را حذف می‌کند.

پیدا کردن آخرین ردیف

برای اینکه تعداد ردیف‌ها ثابت نباشد:

Dim lastRow As Long

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

اکنون می‌توان حلقه را تا آخرین ردیف دارای اطلاعات اجرا کرد:

Dim i As Long

For i = 2 To lastRow
    Cells(i, "C").Value = Cells(i, "A").Value * Cells(i, "B").Value
Next i

ساخت تابع اختصاصی

علاوه بر ماکرو می‌توانید تابع قابل‌استفاده در سلول بسازید:

Function FinalPrice(price As Double, discount As Double) As Double
    FinalPrice = price - (price * discount / 100)
End Function

سپس در اکسل بنویسید:

=FinalPrice(A2,B2)

توابع VBA معمولاً باید مقدار را محاسبه و برگردانند؛ بهتر است از تغییر مستقیم سلول‌های دیگر داخل Function خودداری کنید.

نمایش پیام و دریافت اطلاعات

نمایش پیام:

MsgBox "عملیات تمام شد."

دریافت مقدار از کاربر:

Dim userName As String

userName = InputBox("نام خود را وارد کنید:")
Range("A1").Value = userName

دسترسی به پنجره VBA

ساخت یک ماکروی کاربردی

کد زیر جدول فعال را مرتب و قالب‌بندی می‌کند:

Sub FormatReport()

    Dim ws As Worksheet
    Dim lastRow As Long
    Dim lastColumn As Long

    Set ws = ActiveSheet

    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    lastColumn = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column

    With ws.Range(ws.Cells(1, 1), ws.Cells(1, lastColumn))
        .Font.Bold = True
        .Interior.Color = RGB(31, 78, 121)
        .Font.Color = RGB(255, 255, 255)
    End With

    With ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastColumn))
        .Borders.LineStyle = xlContinuous
        .Columns.AutoFit
    End With

    MsgBox "قالب‌بندی جدول انجام شد."

End Sub

اجرای ماکرو با دکمه

  1. وارد Developer > Insert شوید.
  2. یک Button از نوع Form Control انتخاب کنید.
  3. دکمه را روی شیت بکشید.
  4. ماکروی موردنظر را انتخاب کنید.
  5. متن دکمه را به عبارتی مانند «ساخت گزارش» تغییر دهید.

اکنون کاربر بدون ورود به محیط VBA می‌تواند کد را اجرا کند.

رویدادها

رویدادها هنگام وقوع یک اتفاق، خودکار اجرا می‌شوند. برای مثال، کد زیر پس از تغییر مقدار سلول A1 اجرا می‌شود. آن را در بخش کد همان Sheet قرار دهید، نه Module معمولی:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("A1")) Is Nothing Then
        MsgBox "مقدار A1 تغییر کرد."
    End If

End Sub

در رویدادهایی که سلول را تغییر می‌دهند، مراقب اجرای بی‌نهایت رویداد باشید. در صورت نیاز موقتاً رویدادها را غیرفعال کنید:

Application.EnableEvents = False
' دستورات تغییر سلول
Application.EnableEvents = True

رفع خطا و بررسی کد

  • F8 کد را خط‌به‌خط اجرا می‌کند.
  • با کلیک کنار شماره خط می‌توانید Breakpoint بسازید.
  • پنجره Immediate با Ctrl+G باز می‌شود.
  • دستور Debug.Print مقدار متغیر را در Immediate نشان می‌دهد.
  • هنگام خطا، گزینه Debug معمولاً خط مشکل‌دار را زرد می‌کند.

برای مدیریت ساده خطا:

On Error GoTo ErrorHandler

' دستورات اصلی

Exit Sub

ErrorHandler:
    MsgBox "خطا: " & Err.Description

افزایش سرعت ماکرو

برای کدهای طولانی، به‌روزرسانی صفحه و محاسبات را موقتاً متوقف کنید:

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

' دستورات اصلی

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

حتماً در پایان یا بخش مدیریت خطا، تنظیمات را به حالت اولیه برگردانید.

نکات مهم امنیتی

  • فایل را با فرمت Excel Macro-Enabled Workbook یا XLSM ذخیره کنید.
  • ماکروهای فایل ناشناس را فعال نکنید.
  • قبل از اجرای کدهای حذف، انتقال یا جایگزینی اطلاعات، نسخه پشتیبان بگیرید.
  • از Select و Activate غیرضروری استفاده نکنید؛ مستقیماً به سلول و شیت ارجاع دهید.
  • کد را ابتدا روی یک کپی از فایل آزمایش کنید.
  • برای هر ماکرو فقط یک وظیفه مشخص در نظر بگیرید تا اصلاح و عیب‌یابی آن آسان‌تر باشد.

مسیر مناسب یادگیری VBA این است که ابتدا ضبط ماکرو، Range و Cells را تمرین کنید؛ سپس سراغ متغیر، شرط، حلقه، آخرین ردیف، تابع و رویداد بروید. پس از این مراحل می‌توانید بیشتر عملیات تکراری اکسل را خودکار کنید.

profile name
سریع آسان

بخندید کتاب بخونید و خوب باشید تا جامعه مون به آرامش برسه. لطفا ! هر سوالی دارید در بخش نظرات مطرح کنید. ما یا سایر هموطنان عزیز پاسخ خواهیم داد. برای کمک به سایت ما و گسترش آموزش در بین هموطنان، در سایتها، وبلاگ ها و شبکه های اجتماعی لینک سایت ما را درج کنید.

مطالب پیشنهادی برای شما

محصولات مرتبط

مشاهده همه

دیدگاهتان را بنویسید

1 2 3 4 5

1 نظر درباره «آموزش vba در اکسل از 0 تا 100 و دستورات و نکات کاربردی»

  • علی فاتحی
    علی فاتحی آیا این دیدگاه مفید بود ؟

    درود فراوان
    كتاب ماكرونويسي و برنامه نويسي كاربردي به زبان VBA در اكسل . چاپ سوم. انتشارات سازمان بورس.
    تعداد محدودي از كتاب با قيمت بسيار پايين 32 هزار تومان.
    چاپ جديد احتمالا بالاي 150 هزار تومان خواهد بود.
    ارادتمند
    مولف

    پاسخ
مشاهده همه نظرات
سبد خرید
سبد خرید شما خالی است
× جهت نصب روی دکمه زیر در گوشی کلیک نمائید
آی او اس
سپس در مرحله بعد برروی دکمه "Add To Home Screen" کلیک نمائید