آموزش گام به گام ویژوال بیسیک
زبان برنامه نویسی مجموعه از نشانه ها و ترکیب نحوی آنها می باشد که برنامه نویس می تواند برای حل مساله از آنها کمک بگیرد.
زبان های برنامه نویسی را از چهار دیدگاه می توان بررسی نمود. که به شکل زیر می باشند :
الف) روش های برنامه نویسی
1. زیر روالی
2. ساخت یافته
3. مدولا (ماجولار)
4. شئ گرا
ب) نزدیکی به ماشین
1. سطح پایین
2. سطح میانی
3. سطح بالا
ج) نوع ترجمه
1. مفسّری
2. کامپایلری
د) رابط برنامه نویسی
1. مبتنی بر متن
2. مبتنی بر گرافیک (ویژوال)
روش های برنامه نویسی
در ابتدا برنامه نویسی به صورت نامشخص انجام می شد و موضوع مهم بود در این روش که فاقد قواعد بود برنامه نویسی بسیار دشوار و رفع عیب برنامه دشوار تر بود و از طرفی برنامه ها قابلیت توسعه نداشتند و اغلب برای حل مسائل ساده به کار می رفت. در روش نامشخص خطوط برنامه بیشتر از چند صد خط نمی شد.
برنامه نویسی زیرروالی اولین قدم در پیشرفت برنامه نویسی بود. برنامه نویسی زیرروالی زبانهای فرترن و کوبول را عرضه کردند. در این روش برنامه نویس مسائل را به چندین عملکرد تقسیم می کند و با هر عملکرد یا تابع به صورت جداگانه رفتار می کند اما پیچیدگی تابع هنوز پابرجاست.
حتما این ضرب المثل را شنیده اید که حل مشکل بهتر از حل بحران است. درروش ساخت یافته ما با معنی همین ضرب المثل روبه رو می شویم. به عبارت دیگر در این روش برنامه را به قطعات کوچتری از تابع می توان تجزیه کرد و شکل برنامه مرتب تر می شود.
در این روش قوانینی ارایه شده که براساس هر تابع ا به چند تابع فرعی تقسیم می شود و توابع فرعی قطع بلوک هایی هستند که عمل مشخصی را انجام می دهند حلقه های For، While و ... از این نوع هستند.
زبان های برنامه نویسی پاسکال و C از این نوع می باشند. روش برنامه نویسی امروزی چیزی بین برنامه نویسی زیرروالی و ساخت یافته می باشد.
برنامه نویسی مدولار که به قطعه قطعه نیز معروف است نوع توسعه یافته برنامه ساختار می باشد که در آن قطعات کد به قسمتهای کوچتری به نام مدول (ماژول) تقسیم می شوند. از دیگر ویژگی های برنامه نویسی مدولار کپسوله سازی اطلاعات می باشد. یعنی هر یک از متغیرها و قطعه کدها در محدوده کاری خود فعال هستند و این فعالیت از دید سایر قسمت های برنامه پنهان می باشد.
برنامه نویسی شئ گرا نوع جدید برنامه نویسی است که واحد اصلی برنامه، شئ می باشد. برنامه نویسی شئ گرا دارای قدرت و سازماندهی خیره کننده ای می باشد. اشیاء در برنامه نویسی شئ گرا مساله را به بخش های تشکیل دهنده آن تجزیه می کنند و هر مولفه شامل دستورالعمل ها و دادهای مربوط به خود است در نتیجه پیچیدگی برنامه کاهش یافته و برنامه های بزرگ را راحت تر می توان مدیریت کرد. مهمترین ویژگی در برنامه نویسی شئ گرا، کپسوله سازی، چند ریختی و وراثت می باشد.
برنامه یا پروژه های برنامه نویسی را مانند اتومبیلی تصور کنید. این اتومبیل دارای اجزای مختلفی مانند موتور، بدنه، فرمان و ... می باشد، اشیا نیز مانند قطعات اتومبیل هستند.
فعالیت های قسمت موتور از دید راننده پنهان می باشد و برای راننده تنها حرکت اتومبیل مهم می باشد که این هم مفهوم کپسوله سازی است.
چند ریختی به معنای انجام امور مختلف به وسیله یک شی است به عبارتی یک شئ به چند صورت پیاده سازی می شود برای مثال در اتومبیل موتور وظایف مختلفی را برعهده دارد و از طرفی با سایر اشیاء مثلا گاز، فرمان و ... در ارتباط می باشد.
وراثت واژه ای غریبه نیست و همان معنای عامیانه را در برنامه نویسی دارد. یعنی یک شی در حین اینکه ویژگی های خود را دارا می باشد تعدادی دیگر از ویژگی های خود را از سایر اعضا به ارث می برد برای مثال زمانی که شما فرمان را حرکت می دهید چرخ ها نیز حرکت می کنند و این امر باعث تغییر مسیر اتومبیل می گردد در اینجا شئ چرخ وابسته به شئ فرمان می باشد.
--------------------
درس دوم :
تاریخچه ویژوال بیسیک
عرضه نگارش های مختلف ویژوال بیسیک توسط مایکروسافت به شرح زیر می باشد :
نگارش 1 سال 1991
نگارش 2 سال 1992
نگارش 3 سال 1993
نگارش 4 سال 1995
نگارش 5 سال 1997
نگارش 6 سال 1998
البته قبل از نگارش 3 ویژوال بیسیک با استقبال چندانی روبه رو نشده بود اما با عرضه نگارش 3 توسط مایکروسافت که کامپوننت های زیادی را در بر داشت سبب شد تا برنامه نویسان زیادی را به سوی جذب کند و به همین ترتیب نگارش های بعد در سال های بعد عرضه شد.
برخی ویژگی های ویژوال بیسیک :
ویژوال بیسیک مجموعه ای گسترده تر و فراتر از VBA (Visual Basic For Application) می باشد. مایکروسافت از VBA برای عرضه محصولات خود استفاده کرده است بنابراین برنامه نویسان ویژوال بیسیک به راحتی می توانند در سایر محصولات مایکروسافت برنامه نویسی کنند.
محیط طراحی در ویژوال بیسیک GUI یا Graphic User Interface می باشد که طراحی برنامه های گرافیکی و تحت ویندوز در آن به راحتی امکان پذیر می باشد.
شما در ویژوال بیسیک نیازی به کامپایل کردن برنامه ندارید و آزمایش برنامه های ویژوال بیسیک توسط یک Interpreter یا مفسر انجام می گیرد.
از آنجایی که ویژوال بیسیک یک برنامه مبتنی بر شی (Object) می باشد و به برنامه نویس اجازه می دهد با استفاده از قطعات از پیش آماده شده توسط سایر شرکتها برنامه های خود را طراحی نماید.
راهنمای جامعی (MSDN) که به همراه ویژوال بیسیک ارائه می شود برای برنامه نویسان بسیار سودمند می باشد.
امکانات مناسب برای خطایابی یا Debugging برنامه ها.
از دیگر ویژگی های ویژوال بیسیک گستردگی برنامه های آن می باشد. که مهمترین آنها عبارتند از :
قابلیت فراخوانی و استفاده از Wondows API
ادغام برنامه ها با سایر برنامه های Windows
دسترسی به بانک های اطلاعاتی
ویژوال بیسیک ۶ بدون نیاز به نصب و قابل حمل
ویژوال بیسیک ۶ بدون نیاز به نصب و قابل حمل Visual Basic 6.0 Portable
راسخون نسخه نصبی و پرتابل ویژوال بیسیک ۶ را بنا به درخواست کاربران عزیز برای دانلود ارائه کرده است.
با استفاده از نسخه ی قابل حمل و بدون نیاز به نصب برنامه نویسی ویژوال بیسیک ۶ به راحتی با داشتن یک کول دیسک و یا فلش های متصل به USB به راحتی می توانید این نسخه را در تمام کامپیوتر ها اجرا کنید و همشه همراه خود در کنارتان داشته باشد. این برنامه از طرف سایت راسخون تقدیم به تمامی برنامه نویسان عزیز می کنیم. اما نسخه های پرتابل ممکن است امکانات نسخه اصلی را نداشته باشند یا در هنگام کار ارورهایی را اعلام کنند به خصوص آنهایی که توسط کسان دیگری ساخته می شوند و این نسخه هم مستثنا نمی باشد. ولی مزیت آن این است که می توانید بدون نصب نسخه کامل خیلی سریع به محیط برنامه نویسی Visual Basic دسترسی داشته باشید و مثلا برنامه خود را لود کرده و اجرا و تست و ویرایش کنید.
توجه: برای اجرای برنامه بعد دانلود فایل را با برنامه ی WinRAR از حالت فشرده خارج کرده و Vb6.exe را اجرا کنید.
-پسورد فايل فشرده : www.rasekhoon.net
ویژوال بیسیک چیست ؟
ویژوال بیسیک توسعه یافته زبان برنامهنویسی بیسیک میباشد. بیسیک توسط پروفسور جان کمنسی و توماس کرتز از کالج دارتموث برای نوشتن برنامههای ساده ایجاد شد. طراحی آن از اواسط دهه ۱۹۶۰ آغاز گردید. ویژوال بیسیک تا نسخه ۳ به صورت ۱۶ بیتی بود. از نسخه ۵ به بعد فقط ویرایش ۳۲ بیتی آن ارائه شد. (نسخه ۴ هم به صورت ۱۶ بیتی و هم به صورت ۳۲ بیتی عرضه شده بود.)
ویژوال بیسیک از نسخه ۶ به بعد بر پایه چارچوب داتنت (NET.) ارائه شد. اگر چه با ظهور ویژوال بیسیک دات نت اکثر برنامهنویسان ویژوال بیسیک ۶ به آن گرویدند، ولی نسخه ۶ همچنان طرفداران ویژهی خود را دارد.
ویژوال بیسیک برای توسعه سریع نرم افزار (RAD یا Rapid Application Development) بر پایه رابط گرافیگی کاربر (GUI یا Graphical User Interface) توسعه داده شد. دسترسی آسان و سریع به پایگاه دادهها با استفاده از DAO ،RDO یا ADO و ایجاد کنترلهای اکتیو ایکس از جمله مواردی هستند که این زبان را برای RAD مناسب کردهاند.
برنامهنویسی در ویژوال بیسیک به صورت رخدادگرا میباشد. در برنامهنویسی تجاری، ویژوال بیسیک جز محبوبترینها است. بنابه آماری که در سال ۲۰۰۳ منتشر شد، ۵۳٪ از برنامههای تجاری با استفاده از این زبان تولید شده اند.
تبدیل تاریخ میلادی به شمسی در ویژوال بیسیک
Option Explicit
Private Const mcDayOff = 226894
Private mvarGDayTab
Private mvarJDayTab
Private mcSolar As Double
Public Sub GetJalaliDate(ByVal vGYear As Integer, ByVal vGMonth As Integer, ByVal vGDay As Integer, pJYear As Integer, pJMonth As Integer, pJDay As Integer, pDayName As String)
Dim mGTotalDay As Long
SetConstants
mGTotalDay = GetDayFromFirstGregorianDay(vGYear, vGMonth, vGDay)
pDayName = GetWeekDayName(mGTotalDay)
GetJalaliYearMonthDay mGTotalDay, vGYear, vGMonth, vGDay
pJDay = vGDay
pJMonth = vGMonth
pJYear = vGYear
End Sub
Private Sub SetConstants()
mvarGDayTab = Array(Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31), Array(0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31))
mvarJDayTab = Array(Array(0, 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29), Array(0, 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 30))
mcSolar = 365.25 - 0.25 / 33
End Sub
Private Function GetDayFromFirstGregorianDay(ByVal vGYaer As Integer, ByVal vGMonth As Integer, ByVal vGDay As Integer) As Long
Dim mGYearDiv4 As Integer, mGYearDiv100 As Integer, mGYearDiv400 As Integer
Dim mGTotalDays As Long
mGYearDiv4 = vGYaer \ 4
mGYearDiv100 = vGYaer \ 100
mGYearDiv400 = vGYaer \ 400
mGTotalDays = GetGDayFromBeginOfYear(vGYaer, vGMonth, vGDay)
mGTotalDays = CLng(vGYaer - 1) * 365 + mGTotalDays + mGYearDiv4 - mGYearDiv100 + mGYearDiv400
GetDayFromFirstGregorianDay = mGTotalDays
End Function
Private Function GetGDayFromBeginOfYear(ByVal vGYear As Integer, ByVal vGMonth As Integer, ByVal vGDay As Integer) As Long
Dim mGLeap As Integer
Dim mCount As Integer
GetGDayFromBeginOfYear = vGDay
mGLeap = IsLeapGregorian(vGYear)
For mCount = 1 To vGMonth - 1
GetGDayFromBeginOfYear = GetGDayFromBeginOfYear + mvarGDayTab(mGLeap)(mCount)
Next mCount
End Function
Private Function IsLeapGregorian(ByVal vGYear As Integer) As Integer
If (vGYear Mod 4 = 0 And vGYear Mod 100 <> 0) Or (vGYear Mod 400 = 0) Then
IsLeapGregorian = 1
Else
IsLeapGregorian = 0
End If
End Function
Private Function GetJalaliYearMonthDay(vGTotalDay As Long, pJYear As Integer, pJMonth As Integer, pJDay As Integer)
Dim mJTotalDay As Long
Dim mJYear As Integer
Dim mJDay As Integer
Dim mJLeaps As Integer
mJTotalDay = vGTotalDay - mcDayOff
mJYear = mJTotalDay \ mcSolar
mJLeaps = GetAllJalaliLeapFromBegin(mJYear)
mJDay = mJTotalDay - (365 * CLng(mJYear) + mJLeaps)
mJYear = mJYear + 1
Do While mJDay <= 0
mJYear = mJYear - 1
If IsLeapJalali(mJYear) = 1 Then
mJDay = mJDay + 366
Else
mJDay = mJDay + 365
End If
Loop
If (mJDay = 366 And IsLeapJalali(mJYear) = 0) Then
mJDay = 1
mJYear = mJYear + 1
End If
pJYear = mJYear
GetJalaliMonthDay mJYear, mJDay, pJMonth, pJDay
End Function
Private Function IsLeapJalali(ByVal vJYear As Integer) As Integer
Dim mTemp As Integer
mTemp = vJYear Mod 33
If mTemp = 1 Or mTemp = 5 Or mTemp = 9 Or mTemp = 13 Or mTemp = 17 Or mTemp = 22 Or mTemp = 26 Or mTemp = 30 Then
IsLeapJalali = 1
Else
IsLeapJalali = 0
End If
End Function
Private Function GetAllJalaliLeapFromBegin(ByVal vJYear As Integer) As Integer
Dim mJLeap As Integer
Dim mCurrentCycle As Integer
Dim mJDiv33 As Integer
Dim mCount As Integer
Dim mTemp As Integer
mJDiv33 = vJYear \ 33
mCurrentCycle = vJYear - (mJDiv33 * 33)
mJLeap = mJDiv33 * 8
If mCurrentCycle > 0 Then
mTemp = IIf(mCurrentCycle <= 18, mCurrentCycle, 18)
For mCount = 1 To mTemp Step 4
mJLeap = mJLeap + 1
Next
End If
If mCurrentCycle > 21 Then
mTemp = IIf(mCurrentCycle <= 30, mCurrentCycle, 30)
For mCount = 22 To mTemp Step 4
mJLeap = mJLeap + 1
Next
End If
GetAllJalaliLeapFromBegin = mJLeap
End Function
Private Sub GetJalaliMonthDay(ByVal vJYear As Integer, ByVal vJDayOfYear As Integer, pJMonth As Integer, pJDay As Integer)
Dim mCount As Integer
Dim mJLeap As Integer
mJLeap = IsLeapJalali(vJYear)
mCount = 1
Do While vJDayOfYear > mvarJDayTab(mJLeap)(mCount)
vJDayOfYear = vJDayOfYear - mvarJDayTab(mJLeap)(mCount)
mCount = mCount + 1
Loop
pJMonth = mCount
pJDay = vJDayOfYear
End Sub
Private Function GetWeekDayName(DayFromBegin As Long) As String
Dim Temp As Integer
Temp = DayFromBegin Mod 7
Select Case Temp
Case 0
GetWeekDayName = "یك شنبه"
Case 1
GetWeekDayName = "دو شنبه"
Case 2
GetWeekDayName = "سه شنبه"
Case 3
GetWeekDayName = "چهار شنبه"
Case 4
GetWeekDayName = "پنج شنبه"
Case 5
GetWeekDayName = "جمعه"
Case 6
GetWeekDayName = "شنبه"
End Select
ساخت فرم ورود اطلاعات در اکسل
ساخت فرم ورود اطلاعات در اکسل
چرا به فرم احتیاج داریم؟
اکسل می تواند محلی برای ذخیره اطلاعات و دادههای سازمان شما باشد و البته در بسیاری از موارد برای ذخیره داده ها در یک شیت اکسل شاید ترجیح دهید که ابتدا اطلاعات توسط کاربر تایپ شود و سپس با زدن یک دکمه آن اطلاعات در یک شیت اکسل ذخیره شوند.
دلایل استفاده از فرم ورود اطلاعات در اکسل:
1- نحوه چیدمان دلخواه فرم
2- بررسی کردن اطلاعات توسط گزینه هایی مانند Data Validation
3- ثبت اطلاعات به صورت یک لیست (جدول) در اکسل برای گزارش گیری
اشتباه عمده کاربران اکسل در طراحی فرم
بسیاری از کاربران اکسل برای ساخت فرم "ورود اطلاعات" از user formها در VBA استفاده می کنند که به نظر نگارنده این انتخاب الزاما بهترین نیست و البته استفاده از یک شیت اکسل به مراتب می تواند گزینه بهتری باشد.
(یک نمونه فرم ساخته شده در محیط VBA اکسل)
استفاده از userform کار را به مراتب سخت و پیچیده می کند:
1- فرم های VBA به مراتب به کد نویسی بیشتری احتیاج دارند. مثلا برای ساخت یک کمبو باکس .
2- از دست دادن ده ها امکانات اکسل مانند فرمول نویسی اضافی / تست داده ها با توابع اکسل/ onditional formatting
اصول کلی ساخت فرم ورود اطلاعات در اکسل
فرض کنید که قرار است اطلاعت فرم بالا را در لیست زیر کپی کنید:
1- آنچه را که می خواهید کپی کنید ابتدا به صورتی ساده با فرمول نویسی در یک سطر در کنار هم بیاروید تا کار کپی آنها ساده شود.
2- محل سلول خالی در لیست مرجع را که قرار است اطلاعات را در آنجا کپی کنید، با فرمول COUNTA بیابید.
3- از کد VBA که در فایل پیوست مشاهده می کنید استفاده کنید تا اطلاعات را در شیت مرجع PASTEVALUE نمایید.
پیوست | اندازه |
---|---|
دانلود فایل نمونه ساخت فرم ورود اطلاعات در اکسل | 35.93 KB |