راهنمای پیشرفته VBA برای MS Excel

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

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

راهنمای پیشرفته VBA برای Microsoft Excel

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

موارد زیر رایج ترین کاربردهای VBA در Excel است.

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

    وارد کردن داده و انجام محاسبات

    یکی از رایج ترین مواردی که افراد از Excel برای آن استفاده می کنند در حال انجام محاسبات بر روی داده هایی است که در خارج از اکسل وجود دارد. اگر از VBA استفاده نمی کنید ، این بدان معنی است که شما باید داده ها را به صورت دستی وارد کنید ، محاسبات را اجرا کنید و آن مقادیر را به یک برگه دیگر یا گزارش دهید. خروجی : [640x360]->

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

    کد واردات زیر پرونده CSV را در صفحه Excel خود اجرا کرده و وارد کنید.

    Dim ws As Worksheet, strFile As String
    Set ws = ActiveWorkbook.Sheets("Sheet1") Cells.ClearContents strFile = “c:\temp\purchases.csv” With ws.QueryTables.Add(Connection:="TEXT;" & strFile, Destination:=ws.Range("A1")) .TextFileParseType = xlDelimited .TextFileCommaDelimiter = True .Refresh End With

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

    با این کار یک تابع Sub Worksheet_Activate ()ایجاد می شود. کد فوق را در آن عملکرد جایگذاری کنید.

    این برگه فعال را به برگه 1تنظیم می کند ، ورق را پاک می کند ، با استفاده از مسیر پرونده ای که با متغیر strFileتعریف کرده اید ، به پرونده متصل می شوید و سپس با چرخه حلقه حلقهدر هر خط در پرونده و قرار دادن داده ها در برگه از سلول A1 شروع می شود.

    اگر این کد را اجرا کنید ، می بینید که اطلاعات پرونده CSV به صفحه گسترده شما ، در برگ1وارد می شود

    واردات تنها اولین قدم است . در مرحله بعد می خواهید یک ستون جدید برای ستون ایجاد کنید که شامل نتایج محاسبه شما باشد. در این مثال ، بیایید بگوییم که شما می خواهید 5٪ مالیات پرداخت شده برای فروش هر یک از کالاها را محاسبه کنید.

    ترتیب اقداماتی که کد شما باید انجام دهد این است:

    1. ستون نتایج جدید با نام taxes.li/li>
    2. در ستون واحدهای فروخته شدهحلقه کنید و مالیات فروش را محاسبه کنید.
    3. نتایج محاسبه را بنویسید به سطر مناسب در برگه.
    4. کد زیر تمام این مراحل را انجام می دهد.

      Dim LastRow As Long
      Dim StartCell As Range
      Dim rowCounter As Integer
      Dim rng As Range, cell As Range
      Dim fltTax As Double

      Set StartCell = Range("A1")

      'Find Last Row and Column
      LastRow = ws.Cells(ws.Rows.Count, StartCell.Column).End(xlUp).Row
      Set rng = ws.Range(ws.Cells(2, 4), ws.Cells(LastRow, 4))

      rowCounter = 2
      Cells(1, 5) = "taxes"

      For Each cell In rng
      fltTax = cell.Value * 0.05
      Cells(rowCounter, 5) = fltTax
      rowCounter = rowCounter + 1
      Next cell

      این کد آخرین ردیف را پیدا می کند در برگه داده خود ، و سپس محدوده سلول (ستون با قیمت فروش) را مطابق با اولین و آخرین ردیف داده تنظیم کنید. سپس کد در هر یک از این سلولها حلقه می کند ، محاسبه مالیات را انجام می دهد و نتایج را در ستون جدید خود (ستون 5) می نویسد. نتایج نمایش داده شده در ستون E. را مشاهده خواهید کرد.

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

      محاسبه نتایج از دکمه را فشار دهید

      اگر ترجیح می دهید هنگام اجرای محاسبات ، کنترل مستقیم بیشتری داشته باشید ، به جای اینکه به طور خودکار در هنگام باز شدن ورقه اجرا شود ، می توانید به جای آن از یک دکمه کنترل استفاده کنید. به عنوان مثال ، در همان مورد مشابه در بالا ، اگر می خواهید از یک نرخ مالیات 5٪ برای یک منطقه و نرخ مالیات 7٪ برای منطقه دیگر استفاده کنید ، چه می کنید؟

      شما می توانید اجازه دهید همان کد واردات CSV مجاز باشد به طور خودکار اجرا کنید ، اما هنگامی که دکمه مناسب را فشار می دهید ، کد محاسبه مالیات را اجرا کنید.

      با استفاده از همان صفحه گسترده مانند بالا ، برگه توسعه دهندهرا انتخاب کنید و وارد کردن را انتخاب کنید.از گروه کنترلدر روبان. دکمه فشارActiveX Control را از فهرست کشویی انتخاب کنید.

      دکمه را روی هر بخشی از برگه به ​​دور از جایی که هر اطلاعاتی می رود بکشید.

      بر روی دکمه فشار راست کلیک کرده و خصوصیاترا انتخاب کنید. در پنجره Properties ، عنوان را به آنچه می خواهید برای کاربر نمایش دهید تغییر دهید. در این حالت ممکن است محاسبه 5٪ مالیاتباشد.

      این متن را در خود دکمه فشار منعکس می کنید. پنجره ویژگی هارا ببندید ، و روی دکمه فشار خود کلیک کنید. با این کار پنجره ویرایشگر کد باز می شود و مکان نما شما در هنگام عملکرد کاربر با فشار دادن دکمه در داخل عملکردی قرار خواهد گرفت.

      کد محاسبه مالیات را از بخش فوق در این عملکرد قرار دهید ، و ضرب نرخ مالیات را در 0.05 نگه دارید. به یاد داشته باشید که 2 خط زیر را برای تعریف برگه فعال درج کنید.

      Dim ws As Worksheet, strFile As String

      Set ws = ActiveWorkbook.Sheets("Sheet1")

      اکنون ، فرایند را دوباره تکرار کنید ، یک دکمه فشار دوم ایجاد کنید. عنوان را محاسبه کنید. مالیات 7٪ را محاسبه کنید.

      روی آن دکمه دوبار کلیک کنید و همان کد را بچسبانید ، اما ضریب مالیات را 0.07 کنید.

      اکنون بسته به کدام دکمه را فشار دهید ، ستون مالیات خواهد شد. بر این اساس محاسبه شود.

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

      برای متن سازی این گزینه ، منوی توسعه دهندهرا انتخاب کنید و طراحی حالترا انتخاب کنید و گروه کنترل را در نوار انتخاب کنید تا حالت طراحیرا غیرفعال کنید. قوی>این دکمه های فشار را فعال می کند.

      هر دکمه فشار را انتخاب کنید تا ببینید که چگونه ستون نتیجه "مالیات" تغییر می کند.

      نتایج محاسبه ایمیل به شخصی

      چه چیزی اگر می خواهید نتایج را در صفحه گسترده به کسی از طریق ایمیل ارسال کنید؟

      با استفاده از همان روش فوق می توانید دکمه دیگری به نام نامه الکترونیکی به رئیسایجاد کنید. کد این دکمه با استفاده از شیء Excel CDO برای پیکربندی تنظیمات ایمیل SMTP و ارسال ایمیل به نتایج با فرمت قابل خواندن کاربر شامل می شود.

      برای فعال کردن این ویژگی ، باید ابزارها و منابعبه Microsoft CDO برای ویندوز 2000 کتابخانهبروید ، آن را فعال کنید و خوبرا انتخاب کنید.

      برای ارسال ایمیل و جاسازی نتایج صفحه گسترده ، سه بخش اصلی برای كدی كه باید ایجاد كنید وجود دارد.

      اولین تنظیم متغیرهایی برای نگهداری است. موضوع ، آدرس ها از و به آدرس ها ، و آدرس ایمیل.

      Dim CDO_Mail As Object
      Dim CDO_Config As Object
      Dim SMTP_Config As Variant
      Dim strSubject As String
      Dim strFrom As String
      Dim strTo As String
      Dim strCc As String
      Dim strBcc As String
      Dim strBody As String
      Dim LastRow As Long
      Dim StartCell As Range
      Dim rowCounter As Integer
      Dim rng As Range, cell As Range
      Dim fltTax As Double
      Set ws = ActiveWorkbook.Sheets("Sheet1")
      strSubject = "Taxes Paid This Quarter"
      strFrom = "[email protected]"
      strTo = "[email protected]"
      strCc = ""
      strBcc = ""
      strBody = "The following is the breakdown of taxes paid on sales this quarter."

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

      Set StartCell = Range("A1")
      'Find Last Row and Column LastRow = ws.Cells(ws.Rows.Count, StartCell.Column).End(xlUp).Row Set rng = ws.Range(ws.Cells(2, 4), ws.Cells(LastRow, 4)) rowCounter = 2 strBody = strBody & vbCrLf For Each cell In rng strBody = strBody & vbCrLf strBody = strBody & "We sold " & Cells(rowCounter, 3).Value & " of " & Cells(rowCounter, 1).Value _ & " for " & Cells(rowCounter, 4).Value & " and paid taxes of " & Cells(rowCounter, 5).Value & "." rowCounter = rowCounter + 1 Next cell

      بخش بعدی شامل تنظیم تنظیمات SMTP است تا بتوانید از طریق سرور SMTP خود ایمیل ارسال کنید. اگر از Gmail استفاده می کنید ، این به طور معمول آدرس ایمیل Gmail ، رمز عبور Gmail شما و سرور Gmail SMTP (smtp.gmail.com) است.

      Set CDO_Mail = CreateObject("CDO.Message") 
      On Error GoTo Error_Handling Set CDO_Config = CreateObject("CDO.Configuration") CDO_Config.Load -1 Set SMTP_Config = CDO_Config.Fields With SMTP_Config .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True  .Update End With With CDO_Mail Set .Configuration = CDO_Config End With

      1 را جایگزین کنید.و گذرواژه با جزئیات حساب شخصی خود.

      در آخر ، برای شروع ارسال ایمیل ، کد زیر را وارد کنید.

      CDO_Mail.Subject = strSubject
      CDO_Mail.From = strFrom
      CDO_Mail.To = strTo
      CDO_Mail.TextBody = strBody
      CDO_Mail.CC = strCc
      CDO_Mail.BCC = strBcc
      CDO_Mail.Send

      Error_Handling:
      If Err.Description <> "" Then MsgBox Err.Description

      توجه: اگر هنگام اجرای این کد خطای حمل و نقل را مشاهده کردید ، به احتمال زیاد به دلیل حساب Google شما اجرای "برنامه های کمتر ایمن" را مسدود می کند. لازم است به صفحه تنظیمات برنامه های کمتر ایمن مراجعه کرده و این ویژگی را روشن کنید.

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

      22 همانطور که می بینید تعداد زیادی وجود دارد که در واقع می توانید با Excel VBA خودکار کنید. سعی کنید با قطعه های کد که در این مقاله با آنها آموخته اید ، بازی کنید و اتوماسیون VBA منحصر به فرد خود را ایجاد کنید.

      برنامه نویسی VBA در اکسل --- آموزش مقدماتی

      پست های مرتبط:


      11.02.2020