
یکی از پایه ها در کدنویسی ( در هر زبان برنامه نویسی از جمله VBA ) دستورات شرطی هستند که با استفاده از اونا میتونید عملیات دلخواه خودتون رو به صورت شرطی اجرا کنید. قطعا تو اکسل هم با این شرایط برخورد کردید و از توابعی مثل تابع IF یا تابع Choose استفاده کردید. تو این آموزش میخوام دستوراتی که باعث اجرای شرطی کدها میشه رو بگم.
مهمترین دستورات شرطی تو وی بی دستور Select Case و دستور IF در وی بی هست. هر دو این دستورات یک یا چندین شرط رو بررسی میکنند و بر اساس نتیجه آن یکسری دستورات متناسب رو اجرا میکنند.
دستور IF در وی بی (VBA)
عبارت IF … Then یک شرط رو بررسی میکنه و اگر نتیجه این بررسی مقدار True (شرط برقرار باشد) بخشی از کد رو اجرا میکنه و اگر نتیجه بررسی شرط False (شرط برقرار نباشد) بخش دیگری از کد رو اجرا میکنه. پس نتیجه اجرای دستور IF … Then اجرای یکی از بخش ها ( بخش اول که در صورت برقرار بودن شرط و یا بخش دوم که در صورت برقرار نبودن شرط نوشته شده) اجرا میشه.
ساختار کلی دستور IF … Then به صورت زیر هست:
If Condition1 Then
دستورات قابل اجرا در صورت برقرار بودن شرط اول
ElseIf Condition2 Then
دستورات قابل اجرا در صورت برقرار نبودن شرط اول و برقرار بودن شرط دوم
...
Else
دستورات قابل اجرا در صورت برقرار نبودن هیچکدام از شرایط بالا
End If
در عبارت بالا ابتدا شرط یک ( Condition1) بررسی میشه و اگر برقرار بود دستورات زیر آن اجرا میشه. در صورتیکه این شرط برقرار نبود شرط بعدی (Condition2) بررسی میشه و اگه برقرار بود دستورات زیر اون اجرا میشه. در انتها اگر هیچکدام از این دو شرط برقرار نبودند (یعنی هیچکدوم از کدهای زیرمجموعه اونها اجرا نشده) زمانیکه به بخش Else میرسیم بدون بررسی اضافی، کدهای زیر اون اجرا میشه (این یعنی هیچکدوم از شرایط بالا برقرار نبوده که کدهاشون اجرا نشده و منجر به اجرا شدن دستورات زیر مجموعه Else شده).
در ساختار یک دستور IF در وی بی شما میتونید هر چند تا که لازم باشه ElseIf داشته باشید که در صورت برقرار نبودن یک شرط، شرط بعدی رو بررسی کنه و کدهای مربوط رو اجرا کنه.
یک مثال از دستور IF
میخوایم رنگ سلول فعال رو بر اساس عددی که وارد میکنیم تعیین کنیم. به عنوان مثال اگر مقدار وارد شده در سلول فعال از ۵ کوچکتر باشه، رنگ سلول قرمز باشه. اگر این مقدار بین ۵ تا ۱۰ باشه رنگ سلول نارنجی و در صورتیکه مقدار بیشتر از ۱۰ باشه رنگ سلول سبز باشه.
If ActiveCell.Value < 5 Then
ActiveCell.Interior.Color = 255 ' رنگ سلول قرمز
ElseIf ActiveCell.Value < 10 Then
ActiveCell.Interior.Color = 49407 ' رنگ سلول نارنجی
Else
ActiveCell.Interior.Color = 65280 ' رنگ سلول سبز
End If
دستورات ElseIf و Else اختیاری هستند و در صورتیکه نیاز ندارید میتونند از دستور IF حذف کنید.
تو این آموزش در مورد نحوه استفاده از دستور IF در وی بی (VBA) صحبت شد. استفاده از این دستور، حالت های بیشتری هم داره که پیشنهاد میکنم مطلبی که مایکروسافت برای این دستور نوشته رو هم بخونید.
در مورد ساختار دستور Select Case در آموزش های بعدی صحبت میکنیم.





با عرض سلام
چرا وقتی از کد ذیل برای جستجو استفاده میکنم خطا میدهد:
If Worksheets(“DARKHAST”).Range(“C202:AO202”) = 10300003 Then
ولی وقتی به اینصورت استفاده میکنم خطا نمی دهد
If Worksheets(“DARKHAST”).Range(“C202”) = 10300003 Then
باتشکر
درود
وقت بخیر
در VBA امکان اینکه یک محدوده چند سلولی رو مستقیما با یک عبارت مقایسه کنید نیست. برای این کار باید از حلقه استفاده کنید که تک تک سلول های محدوده رو بررسی کنه.
سلام
خسته نباشید
یک سوال داشتم
سهتا ستون دارم برای انجام فعالیتی ،که اگه تیک زده شده ،ینی اون کار انجام شده.و برای هر سه ستون یک ضریب درنظر گرفتم ک مجموعش میشه یک.حالا میخوام دستوری بنویسم ک مثلا اگر ستون اول تیک زده شده،توی یک سلول برام بزنه مثلا ۴۰ درصد کار انجام شده.
ممنون میشم کمکم کنید.
درود بر شما
میتونید با if انجام بدید
میتونید هم از طریق ترکیب فرمت سل و مقدار سلول، مستقیم محاسبات رو انجام بدید. یعنی در یکی از ۳ سلول بنویسید ۴۰ بع در فرمت سل تیک بذارید. اینطوری کافیه فقط اون ۳ سلول رو جمع بزنید.
ممنونم از شما،فقط اگر لطف کنید بگید با if باید چطوری بنویسم،ممنون میشم بازم.
بستگی داره . حالت های مختلفی میتونه وجود داشته باشه. مثلا اگر با کاراکتر ویژه بذارید، میتونید اینطوری بزنید:
=SUM((A1:C1=”a”)*A2:C2)
مثلا اگه فونت webdings استفاده کنید و از کاراکتر a، میتونید از این فرمول استفاده کنید (بصورت ارایه ای. یعنی ctrl+shift+enter بزنید موقع ثبت)
در محدوده A2:C2 هم ضرایب رو گذاشتیم
یه برنامه تو vba اکسل نوشتم که عکس کادر را میاره
ولی اگه کدی را بزنیم که اون کد وجود نداشته باشه error میده
اگه ممکن ه راهنمایی کنید
باید یه شرط اول ش بنویسم ولی بلد نیستم
Private Sub TextBox1_Change()
Image1.Picture = LoadPicture(“D:\pic2\” & TextBox1.Value & “.jpg”)
End Sub
درود
اگه میخواید ارور نده، اول کد on error resume next رو بزنید
سلام و وقت بخیر. میشه یه کد برام بنویسید که مثلا اگه سلول مورد نظر خالی بود تکس باکس ثبت اطلاعات ،عملیات را انجام نده و پیغام لطفاً کادر مورد نظر را پر کنید بده ممنون .
درود بر شما
کد ایف رو بذارید داخل دکمه ثبت عملیات و با این شرط که مثلا فلان تکست باکس خالی نباشه. اگه خالی بود مسیج باکس رو نشون بده
ما سعی میکنیم اموزش بدیم
اصولا کد اماده اائه دادن خیلی مفید نخواهد بود چون د رهر شرایطی کد تغییراتی میکنه
سلام
وقتتون بخیر
من یه فرم ورود اطلاعات در اکسل دارم که دکمه ی ثبت اطلاعات رو که می زنم اطلاعات در یک سیت ثبت میکنه
می خوام در فرم تاریخ بدم و اطلاعات در شیت همون تاریخ ثبت بشه
آیا امکانش هست؟؟ ممنون میشم راهنماییم کنید ؟؟
درود بر شما
بله شدنی هست خب کافیه در اون خط که میگه برو در شیت ۱ مثلا ثبت کن، اسم شیت مورد نظرتون رو بنویسید