
اصول خوانایی کد برای نمایش کدهای وی بی (VBA)
زمانیکه در حال یادگیری زبان وی بی (VBA) هستید خیلی مهمه که از همون اول نحوه درسته معرفی کدهای نوشته شده رو بلد باشید و اصول خوانایی کد های وی بی و طبق اون کدهاتون رو توضیح بدید. کدزنی به این شیوه زمان بیشتری از شما میگیره اما اگه به این شیوه پایبند باشید خیلی راحت میتونید بفهمید که کد نوشته شده چیه و چه کاری انجام میده.
در زمان نوشتن کد برای شما کاملا واضح هست که کد برای چی نوشته شده و کارکردش چیه، اما باید کدها رو طوری بنویسید که اگه ۶ ماه دیگه هم برگشتید تا کد رو بررسی کنید (به هر دلیلی مثل اصلاح کد و یا بهبود اونها) مثل الان براتون روشن باشه و با کمترین زمان بتونید کدها رو تغییر بدید. حالت سخت تر اینه که فردی دیگه ای کدهای شما رو بخواد بخونه و متوجه بشه که چی هست.
امروز میخوایم در مورد کامنت ها، تورفتگی و شکستگی خطوط کد صحبت کنیم. اینها ابزارهایی هستند که تو تبدیل کدهای شما به کدهایی واضح کمک میکنند.
اصول خوانایی کد: کامنت ها (Comments)
مهمترین اصل از اصول خوانایی کد برای شفاف سازی و رمزگشایی یک کد استفاده از کامنت ها تا حد توان هست. کامنت ها خطوطی در کد شما هستند که برای یک توضیح به شما و دیگران که در حال خوندن کد هستند استفاده میشه، اینکه کدی که اینجا هست چه کاربردی داره و برای چی اینجا هست.
کامنت ها به وسیله زبان وی بی (VBA) اجرا نمیشن برای همین تأثیری در خروجی برنامه هم ندارن. تو زبان وی بی (VBA) هر چیزی که بعد از کارکتر (‘) بیاید رو به عنوان یک کامنت در نظر میگیره. به همین دلیل تو ویرایشگر کد وی بی (VBA) رنگ کامنت ها به رنگ سبز تغییر میکنند.
تو مثال زیر یک قطعه کد وجود داره که با استفاده از کامنت ها خطوط مهم، کد رو توضیح دادیم:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ |
' یک برنامه (روال اجرایی) برای جستجو درون سلول های ' که درون شیت فعال هست A1-A100 Sub Find_String(sFindText As String) Dim i As Integer ' متغیر استفاده شده در حلقه برنامه Dim iRowNumber As Integer ' متغیر استفاده شده برای ذخیره نتیجه iRowNumber = ۰ 'جستجو در سلول های مشخص شده تا زمانیکه کلمه موجود در متغیر 'پیدا بشه sFindText For i = ۱ To ۱۰۰ If Cells(i, ۱).Value = sFindText Then ' در صورتیکه کلمه مورد نظر پیدا شد شماره ردیف آن را در متغیر مربوطه ذخیره کن و از حلقه خارج شو iRowNumber = i Exit For End If Next i ' یک پیغام به کاربر نمایش بده و نتیجه جستجو رو نمایش بده If iRowNumber = ۰ Then MsgBox "String " & sFindText & " not found" Else MsgBox "String " & sFindText & " found in cell A" & iRowNumber End If End Sub |
اگه نحوه کار کردن کد بالا رو متوجه نشدید اصلا نگران نباشید با خوندن مطالب بعدی به زودی میتونید این کدها رو هم متوجه بشید و هم خودتون بنویسید. هدف از این مثال فقط نشون دادن این مسئله هست که چطوری با استفاده از کامنت ها بتونیم کدی که زدیم رو توضیح بدیم.
همونطور که اول گفتم استفاده از این روش زمان بیشتری میبره و عمدتا این کار رو انجام نمیدن ولی زمانیکه دوباره سراغ کدها برن ارزش این روش مشخص میشه.
[su_heading]هر دقیقه ای که شما صرف ایجاد توضیح مناسب برای کدهاتون میکنید در آینده ساعت ها زمان شما رو برای ویرایش کدها ذخیره میکنه.[/su_heading]
تورفتگی کدها
یکی دیگه از اصول خوانایی کد ها که برای کمک به افزایش خوانایی کدها استفاده میشه اضافه کردن تورفتگی ها به کد هست. اگه یه بار دیگه به مثال بالا نگاه کنید میبینید که وجود تورفتگی ها باعث میشه که بهتر متوجه بشید که هر خط کد زیر مجموعه چه دستوری هست. برای ایجاد تو رفتگی در هر خط از دکمه TAB استفاده میشه که به ازای هر بار زدن این دکمه یک تو رفتگی ایجاد میشه.
شکستگی خطوط
بعضی وقت ها به خاطر منطق مسئله مجبور میشیم که یک خط از کد رو خیلی طولانی بنویسیم. وجود خطوط بلند یکی دیگه از اصول خوانایی کد هست باعث میشه که کدها یکدست دیده نشن. از طرفی وسط یک خط نمیشه با زدن اینتر (Enter) به خط بعدی رفت و مابقی کد رو از اونجا نوشت (با انجام این کار به ما پیغام داده میشه که باعث ایجاد خطا میشه). اما یک راه برای ایجاد این شکستگی تو کدهای بلند وجود داره.
زمانیکه میخواید یک خط رو به دو خط تبدیل کنید باید در قسمتی که قصد شکستن خط رو دارید یک فاصله و زیرخط بذارید ( _) و بعد از آن اینتر بزنید. با این کار نشون به اجرا کننده برنامه نشون دادیم ادامه این خط از کد در خط بعدی قرار داده شده.
در مثال زیر نشون میدیم که چطوری شکستگی خطوط باعث افزایش خوانایی کدهای وی بی میشه. دستور If زیر رو در نظر بگیرید:
۱ |
If (index = ۱ And sColor1 = "red") Or (index = ۲ And sColor1 = "blue") Or (index = ۳ AndsColor1 = "green") Then |
با اضافه شدن شکستگی خط، همان ساختار رو به صورت زیر میتونیم استفاده کنیم:
۱ ۲ ۳ |
If (index = ۱ And sColor1 = "red") Or _ (index = ۲ And sColor1 = "blue") Or _ (index = ۳ And sColor1 = "green") Then |
بعد از اینکه ساختار If رو به صورت بالا شکستیم و تبدیل به سه خط کردیم، شرایط مختلف رو به راحتی تشخیص میدید.
در این آموزش سعی کردیم نشون بدیم که نحوه توضیح و نوشتن کدهای وی بی چقدر میتونه تو خوانایی و روشن بودن مفهوم کد تأثیر داشته باشه که نتیجه آن ذخیره ساعت ها وقت شما در درک کدها و کاهش احتمال به وجود آمدن خطا است.
اگر به زبان برنامه نویسی VBA علاقه دارید حتما پیشنهاد میکنم دوره ماکرونویسی در اکسل رو ببینید.
چه طوری میشه یک کد نوشت که در نرم افزار ورد هر جا که فونت تیتر هست و بقیش با فونت بی نازنین نوشته شده از جایی که فونت بی تیتر تمام میشه یا از جایی که فونت بی نازنین شروع میشه توی یک خط که این دو فونت با یک یا دو فاصله به متصل شده اند به خط بعدی منتقل بشه راهی هست ؟
درود بر شما
در خصوص سوالات اکسلی در خدمتتون هستیم
سلام
آبا این امکان وجود دارد که چند ماکرو را با یک دکمه اجرا کنیم؟
سلام
بله، کافیه ماکروهای دیگه رو درون یک ماکرو فراخوانی کنید و این ماکرو رو اجرا کنید.
ممنون مهندس جان
لطف میکنید روش فراخوانی چند ماکرو در ماکروی دیگر رو توضیح بدید.
اسم ماکرو های مورد نظر رو در بدنه ماکرو اول بنویسید
ممنون از راهنماییتون
یک سوال دیگه داشتم من یک کد نوشتم از دستور if و elseif استفاده کردم که شرطم حدود ۶۰۰ حالت داره که بعد از هر if یک سری دستور اجرا میشه مثلا بعد از if اول دستور a و دستور x و y بعد از if دوم دستور b و دستور x و y الی آخر یعنی دستور x و y توی همه شرطها تکرار میشه.
آیا راهی برای خلاصه کردنش وجود داره؟ لطفا راهنمایی کنید.
سلام
خواهش میکنم.
اگر دستور یا دستوراتی در همه حالت ها تکرار میشه، بهتره دستورات رو بعد از پایان IF بذارید چون در هر صورت این کدهای تکراری باید اجرار شوند.
لذا نیازی به قرار گرفتن در ساختار IF ندارند.
اما برای دستوراتی که وابسته به حالت خاص هست می بایست در ساختار IF لحاظ شوند.
البته در موارد خاصی با توجه به شرایط مسئله ممکنه بشه با ترفندهایی تعداد خط کدها رو کاهش داد.