با سلام خدمت همراهان عزیز سایت آی تی سواد
در این مقاله قصد داریم نحوه ایجاد فرم جستجو در اکسل، برای یافتن و چاپ از طریق VBA را یاد بگیریم. راه های متعددی برای استفاده آسانتر از نرم افزارهای مختلف وجود دارد و نرم افزار اکسل یکی از پرکاربردترین آنها است که اغلب کسب و کارها از آن استفاده می کنند. معمولا اطلاعات زیادی وارد اکسل می شود که درج هرکدام و جستجوی آنها می تواند زمانبر باشد و یا حتی با احتمال خطا صورت گیرد.
زبان برنامه نویسی vba در اکسل این امکان را به کاربر می دهد تا برخی از کارها را بصورت خودکار انجام دهد. به این ترتیب شما می توانید در کمترین زمان و با بیشترین دقت اطلاعات لازم را وارد کرده و همزمان آنها را چاپ کنید.
ما در شیت۱ داده هایی داریم که شامل ستون A کد شناسایی ، ستون B حاوی نام ، ستون C آدرس ، ستون D شهر ، ستون E منطقه ، ستون F کشور و ستون G شامل کد پستی است.
در شیت دوم می خواهیم فرم جستجو را مانند تصویر زیر ایجاد کنیم.
ایجاد فرم جستجو در اکسل
۱. کلیدهای Alt + F11 را فشار دهید تا پنجره Microsoft Visual Basic for Applications باز شود .
۲. در پنجره Microsoft Visual Basic for Applications بر رویInsert > Module کلیک کنید و سپس از زیر کد VBA را کپی و در درون پنجره ماژول قراردهید .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Sub Searchdata() Dim Lastrow As Long Dim count As Integer Lastrow = Sheets("Data").Cells(Rows.count, 1).End(xlUp).Row Sheet1.Range("A11") = "" Sheet1.Range("B11") = "" Sheet1.Range("C11") = "" Sheet1.Range("d11") = "" For X = 2 To Lastrow If Sheets("Data").Cells(X, 1) = Sheet1.Range("B3") Then Sheet1.Range("A11") = Sheets("Data").Cells(X, 1) Sheet1.Range("B11") = Sheets("Data").Cells(X, 2) Sheet1.Range("C11") = Sheets("Data").Cells(X, 3) & " " & Sheets("data").Cells(X, 4) _ & " " & Sheets("data").Cells(X, 5) & " " & Sheets("Data").Cells(X, 6) Sheet1.Range("D11") = Sheets("Data").Cells(X, 7) End If Next X End Sub |
- روی دکمه جستجو راست کلیک کنید.
- روی Assign Macro کلیک کنید.
- روی searchdata کلیک کرده و سپس بر روی OK کلیک کنید.
برای اجرای ماکرو، بر روی دکمه جستجو کلیک کنید.
اگر کدشناسایی در آنجا باشد ، جزئیات به روز می شوند ، در غیر این صورت چیزی ظاهر نمی شوند.
برای چاپ گرفتن نتیجه جستجو کد زیر را در ماکرو جدید قرار دهید.
1 2 3 4 |
Sub PrintOut() Sheet1.Range("A1:D12").PrintPreview Sheet1.Range("A1:D12").PrintOut End Sub |
سپس مراحل زیر را انجام دهید.
- روی دکمه چاپ راست کلیک کنید.
- روی Assign Macro کلیک کنید.
- روی PrintOut کلیک کرده و سپس بر روی OK کلیک کنید.
ترجمه شده از سایت www.extendoffice.com
I believe you have remarked some very interesting details , appreciate it for the post. Bobbye Ole Wilkinson
سلام خسته نباشید، ببخشید یه سوال داشتم اینکه اگه تعداد سطرها و ستون هامون بیشتر باشه چه قسمت هایی تغییر میکنه از برنامه
ممنون میشم اگه پاسخ بدین
سلام
Sheet1.Range(“A11”) = “”
Sheet1.Range(“A11”) = Sheets(“Data”).Cells(X, 1)
در این کدها
بجای ستون a میتوانید نام ستون دیگر رو اضافه کنید
سلام با آرزوی تندرستی و سلامتی
من 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 و ستون اول
سلام وقتتون بخیر
ممنون بابت آموزش
من عین آموزش درست کردم اوکی بود
زمانی که یک کد داشته باشیم با ۲ نوع اطلاعات جستجو درست عمل نمیکنه چظوری میتونم درست کنم که وقتی یک کد دوبار تکرار شد اطلاعات رو نشون بده
ممنون میشم راهنمایی کنید
سلام
منظورتون از دوبار تکرار شد اطلاعات رو نشون بده رو متوجه نمیشم
یک کد داریم که داخل شیت 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 داده ای پیدا کرد ،در اولین ردیف خالی شیت دو قرار میدهد
با سلام و خداقوت یه سوالی داشتم من عین ماکرو را نوشتم ولی زمان اجرا توی این ردیف ایراد می گیره
Sheet1.Range(“A11”) = “” Sheet1.Range(“B11”) = “”
سلام
عکس خطا رو به تلگرام hamedmahmoudkhani@ ارسال کنید