ایجاد فرم جستجو در اکسل از طریق VBA

با سلام خدمت همراهان عزیز سایت آی تی سواد

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

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

ما در شیت۱ داده هایی داریم که شامل ستون A کد شناسایی ، ستون B حاوی نام ، ستون C آدرس ، ستون D شهر ، ستون E منطقه ، ستون F کشور و ستون G شامل کد پستی است.

فرم جستجو در اکسل

در شیت دوم می خواهیم فرم جستجو را مانند تصویر زیر ایجاد کنیم.

فرم جستجو در اکسل

ایجاد فرم جستجو در اکسل

۱. کلیدهای Alt + F11 را فشار دهید تا پنجره  Microsoft Visual Basic for Applications باز شود .

۲. در پنجره Microsoft Visual Basic for Applications  بر رویInsert > Module کلیک کنید و سپس از زیر کد VBA را کپی و در درون پنجره ماژول قراردهید .

 

اکنون ، این ماکرو را به دکمه جستجو اختصاص می دهیم.
  • روی دکمه جستجو راست کلیک کنید.
  • روی Assign Macro کلیک کنید.
  • روی searchdata کلیک کرده و سپس بر روی OK کلیک کنید.

برای اجرای ماکرو، بر روی دکمه جستجو کلیک کنید.
اگر کدشناسایی در آنجا باشد ، جزئیات به روز می شوند ، در غیر این صورت چیزی ظاهر نمی شوند.

فرم جستجو در اکسل

برای چاپ گرفتن نتیجه جستجو کد زیر را در ماکرو جدید قرار دهید.

سپس مراحل زیر را انجام دهید.

  • روی دکمه چاپ راست کلیک کنید.
  • روی Assign Macro کلیک کنید.
  • روی PrintOut کلیک کرده و سپس بر روی OK کلیک کنید.

چاپ فرم جستجو د راکسل

 

 

ترجمه شده از سایت www.extendoffice.com

ممنون از همراهی شما کاربران عزیز آی تی سواد

اشتراک گذاری

11 دیدگاه دربارهٔ «ایجاد فرم جستجو در اکسل از طریق VBA;

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

    پاسخ
  2. سلام با آرزوی تندرستی و سلامتی
    من X, 1 و X, 2 را در فرمول زیر
    Sheet2.Range(“d3”) = Sheets(“Data”).Cells(X, 1)
    Sheet2.Range(“d5”) = Sheets(“Data”).Cells(X, 2)
    مربوط به ایجاد فرم جستجو در اکسل از طریق VBA متوجه نشدم البته من تازه شروع کردم به مطالعه vba
    لطفا راهنمایی بفرمائید
    باتشکر الماسی

    پاسخ
    • سلام برای پیدا کردن کد شناسایی مورد نظر ما از شیت یک نیاز هست تک تک ردیفها در شیت ۱ رو بررسی کنیم
      بجای اینکه آدرس تک تک ردیف ها رو تعریف کنیم یک متغیر به نام x تعریف میکنیم و با استفاده از for هربار این مقدار x که از ۲ شروع میشه ،بیشتر میشه ،میتونیم تک تک ردیف ها رو بررسی کنیم
      x،۱ میشه ردیف x و ستون اول

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

    پاسخ
      • یک کد داریم که داخل شیت data دو بار تکرار شده
        مثلا کد ۱۱۰۴۰۲۰ هم سطر ۲ هم سطر ۳ تکرار شده داری که الاعاتی هستن که باهم دیگه فرق دارند
        تو شیت search فقط یک سطر نشون میده چطوری کد نویسی بشه که اگر کد مورد نظر داخل شیت data چندبار تکرار شده بود داخل شیت search نشون بده

        پاسخ
        • سلام
          Sub Searchdata()
          Dim Lastrow As Long
          Dim count As Integer
          Lastrow = Sheets(“Data”).Cells(Rows.count, 1).End(xlUp).Row
          lastrow2 = Sheet1.Cells(Rows.count, 1).End(xlUp).Row
          Sheet1.Range(Cells(“a11”), Cells(lastrow2, 4)) = “”

          For X = 2 To Lastrow
          If Sheets(“Data”).Cells(X, 1) = Sheet1.Range(“B3”) Then

          Sheet1.Cells(lastrow2 + 1, 1) = Sheets(“Data”).Cells(X, 1)
          Sheet1.Cells(lastrow2 + 1, 2) = Sheets(“Data”).Cells(X, 2)
          Sheet1.Cells(lastrow2 + 1, 3) = Sheets(“Data”).Cells(X, 3) & ” ” & Sheets(“data”).Cells(X, 4) & ” ” & Sheets(“data”).Cells(X, 5) & ” ” & Sheets(“Data”).Cells(X, 6)

          Sheet1.Cells(lastrow2 + 1, 4) = Sheets(“Data”).Cells(X, 7)
          lastrow2 = Sheet1.Cells(Rows.count, 1).End(xlUp).Row
          End If
          Next X
          End Sub

          یک متغیر دیگر برای شمارش آخرین ردیف شیت ۲ تعریف کردیم ،بعد هر بار که در حلقه for داده ای پیدا کرد ،در اولین ردیف خالی شیت دو قرار میدهد

          پاسخ
  4. با سلام و خداقوت یه سوالی داشتم من عین ماکرو را نوشتم ولی زمان اجرا توی این ردیف ایراد می گیره
    Sheet1.Range(“A11”) = “” Sheet1.Range(“B11”) = “”

    پاسخ

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