در بعضی از موارد میخواهیم شیتهای اکسل به ترتیب دلخواه ما (برای مثال به ترتیب ماه، یا مرتب سازی شیتها به ترتیب حروف الفبا) مرتب شوند ولی متاسفانه ابزار مرتب سازی شیتها در اکسل موجود نیست و برای حل این مشکل باید از زبان برنامه نویسی VBA استفاده نمود.
کد vba جهت مرتب سازی شیتها به ترتیب حروف الفبا
بدین منظور باید از الگوریتم مرتب سازی استفاده کنیم، در این الگوریتم هر شیت با تمامی شیتهای قبل از خود مقایسه میشود، در هر مقایسه اسم شیت با اسم شیت قبلی مقایسه میگردد و در صورت نیاز، شیت جابه جا می شود. به منظور کد نویسی این الگوریتم ابتدا وارد محیط VBE شده و بعد از باز کردن Module ، کدهای زیر را ثبت مینماییم.
SUB SOrting_Sheets()
۱- دستور Sub کد آغازین تمامی فرایندهایی است که در VBA کد میشود و به دنبال آن اسم مد نظر برای فرایند میآید.
For i = 1 To Worksheets.Count
For j=1 To i
۲-در این قسمت دو حلقه ساخته می شود که در حلقه اول تمامی شیتها شمارش میشود و در حلقه دوم برای هر شیت انتخاب شده، شیتهای قبلی آن مورد بررسی قرار میگیرد.
If Ucase(Worksheets(i).Name)<Ucase(Worksheets(j).Name) Then Worksheets(i).Move Before:=Worksheets(j)
۳- در این قسمت بررسی میشود، اگر متن i امین شیت از متن J امین شیت کوچکتر بود (بر اساس حروف الفبا) شیت iام را قبل از شیت J ام میاورد.
Next j
Next i
۴- در دستورات فوق، قسمت پایانی حلقه ها مشخص میشود.
End Sub
۵-دستور End Sub هم دستور پایانی هر فرایند در VBA میباشد.
در قسمت زیر، کد به صورت یکجا آورده شده است.
Sub SOrting_Sheets()
For i = 1 To Worksheets.Count
For j = 1 To i
If UCase(Worksheets(i).Name) < UCase(Worksheets(j).Name) Then Worksheets(i).Move Before:=Worksheets(j)
Next j
Next i
End Sub