صفحه 3
Visual Basic
For Application
Microsoft
از اجزاء كوچكتري به نام كليد تشكيل شده صفحه فرم ما از
keyboard همانطور كه يكيا شيء تشكيل شده است
. زماني كه ما يك يك كليد را مي فشاريم و Object تعدادياست
. حال ممكن (Event) حرفي نوشته مي شود ، نوشته شدن حرف يك رخداد يا واقعهو يا هر عمل ديگري
(Copy) كپي شدن ، (Delete) است وقايع مختلفي از قبيل حذف شدنهستند
. Event رخ دهد . اينها وقايع يا،
Click است مانند Method ها يا وقايع ميشود Event نوع اتفاقي كه باعث بوجود آمدنبدين معنا كه اگر
. . . ، Dbl Click ، Key Press ، Mouse Down ، Mouse Overروي آن حركت كرده و يا حتي دكمه
( Mouse ) كليك كرديم و يا با ماوس Object روياي از كيبورد را فشرديم عمل يا اتفاق صورت پذيرد
.داراي مشخصاتي است كه مي توان از طريق كد نويسي آنها را كنترل كرده و
Object هرBorder Style
، Height ، Font Size ، Font تغييراتي را بر روي آنها انجام داد . مانندبراي اعمال كنترل هاي دلخواه بر روي
. . . . ، Fore Color ، Fill Color ، Caption ،علامت
“ . “ گذاشته و ، Object در برنامه نويسي پس از نام (Properties) اين مشخصاتبه آن مقدار مي دهيم
. مثلاً براي تغيير عنوان يك دكمه كد زير را مي نويسيم :CommandButton.Caption =
“ Enter New Number!”اگر دقت كنيد مي بينيد زماني كه شما علامت
“ . “و يا “ = “ را تايپ مي كنيد پنجره ايMethod
و Properties در كنار عنوان شما پديدار مي شود كه حاوي Listbox بصورتمورد نظر شما است و با نگارش هر حرف از سوي شما بطور خودكار و
Object شيء يامرتب شده صعودي ليست مشخصات و متد مورد نظر را جستجو مي كند
. كافي است رويرا بفشاريد تا كد آن بطور خودكار نوشته شود
. Space عنوان دلخواه خود دكمهMethods
و Properties ليستObject
هرMS Office
در VBA آموزش زبانصفحه
4Visual Basic
For Application
Microsoft
اگر بخواهيد تابعي را اجرا كنيد و يا فر ماني بدهيد كه ورودي هاي آن چند آرگومان مي باشد
به شما راهنمايي كرده و نوع آرگومانهايي را كه بايد وارد كنيد به شما نشان مي دهد
. VBAانجام چند تمرين ساده
:بنويسيد و نتيجه آن
MSWord نرم افزار VBA حال با كمي دقت برنامه هاي زير را در محيطرا ببينيد
:MS Office
در VBA آموزش زبانصفحه
5Visual Basic
For Application
Microsoft
كد زير را وارد كنيد و نتيجه آن را كه نمايش پنجره پيغام است ببينيد
:اگر بخواهيم بدون اينكه در اجراي برنامه تأثيري گذاشته شود ،
VBA در محيط برنامه نويسيتوضيحاتي در مورد هر خط از برنامه بدهيم بايد در ابتداي آن علامت
“ ‘ “ بگذاريم كه درنتيجه آن سبزرنگ شدن متن بعد از علامت است كه نشان مي دهد اين قسمت ، توضيحات
است و كد آن قابل اجرا نيست
.:
VBA مهم در ( Shortcut Key ) كليدهاي ميانبرتوصيف آن كليد
F2 Object
مرورگرF4 Properties
نمايشF5 Compile
اجراي برنامه ياCtrl+F
كامل 5 Compile شروع باF8
( For Debug ) اجراي برنامه خط به خطShift+F اجرا از روي 8
F تنظيم نقطه انفصال 9
Shift+F9 ( Quick Preview ) نگاه سريع
Ctrl+G Immediate Widow نمايش
MS Office
در VBA آموزش زبانصفحه
6Visual Basic
For Application
Microsoft
Modules
، Procedures ، Functions برنامه نويسيModule
.۱ويك يا چند تابع يا زير برنامه است
. Declarations داراي يك صفحه اوليه به نام Moduleاز صفحه اوليه به براي تعريف متغيرها ، ثابتها،و آنچه مورد نياز زير برنامه ها يا توابع آن
ممكن است فقط براي تعريف متغيرهاي
Module است ، استفاده مي شود . از يك Moduleو ثابتهايي كه در تمام توا بع و زير برنامه هاي بانك اطلاعاتي به كار مي روند ،
Globalاستفاده مي شود
.Procedures
وقتي يك بخش از برنامه توسط برنامه ديگر خوانده مي شود به آن زير برنامه گفته مي شود
.زير برنامه خود مي تواند يك زير برنامه ديگر را اجرا كند
. وقتي يك زير برنامه در يك برنامهديگر خو انده مي شود ، فرمانهاي آن زير برنامه يكي يكي اجرا شده و در پايان ادامه كار به
End Sub
در ابتدا) و ) Sub برنامه اصلي بر مي گردد . هر زير برنامه با كلمات شناخته شدهنشان مي دهد
: VBA (در انتها) مشخص مي شود. فرمت صفحه بعد يك برنامه را درنام زير برنامه
Sub
شروع فرمانهاي زير برنامه
. . . . .
. . . . .
. . . . .
پايان فرمانهاي زير برنامه
End Sub
مي توانيد با
VBA براي اشاره به يك زير برنامه مي توانيد ف قط از نام آن استفاده كنيد . درو بعد از آن نام زير برنامه ، صريحاً به يك زير برنامه اشاره كنيد
. با اين Call استفاده از فرمانبرابر با نام زير برنامه تلقي مي شود تا يك متغير
Call روش نام اشاره شده در دنباله فرمانحافظه اي
.MS Office
در VBA آموزش زبانصفحه
7Visual Basic
For Application
Microsoft
Functions
توابع يك نوع زير برنامه هستند كه با اشاره به نام آنها يك داده يا نتيجه ارائه مي كنند
.Module
ساخته مي شوند . براي ايجاد يك تابع در صفحه اوليه Module توابع عمدتاً دررا بزنيد
. با اين عمل يك Enter سپس يك نام دلخواه را تايپ و كليد Function كلمهصفحه جديد باز مي شود كه شبيه فرمت زير است
.Function
([پارامترهاي تابع]) نام تابعشروع فرمانهاي تابع
. . . .
. . . .
. . . .
پايان فرمانهاي تابع
End Function
فرم يا كنترلهاي آن و همچنين در
Event توابع ممكن است داراي پارامتر نباشند . از توابع درعلامت مساوي سپس نام
Event گزارش استفاده مي شود . براي اين منظور بايستي در مقابلتابع را بنويسيد
. اگر تابع پارامتر ندارد ، بعد از نام تابع فقط علامت پرانتز باز و بسته ، در غيراين صورت بايستي پارامترهاي آنرا به ترتيب داخل پرانتز وارد كرد
.MS Office
در VBA آموزش زبانصفحه
8Visual Basic
For Application
Microsoft
هم ب ه عنوان
Access انواع مختلف عناصر بانك اطلاعاتي نرم افزار VBA علاوه بر اين درمتغير حافظه اي شناخته مي شوند
. جدول زير اين متغيرها و معادل آنها در بانك اطلاعاتي رانشان مي دهد
:متغير حافظه اي عنصر معادل در بانك اطلاعاتي
بانك اطلاعاتي در اكسس
Databaseفرم و زير فرم
Formگزارش و زير گزارش
Reportكنترلهاي روي فرم و گزارش
Controlطراحي سوال
QueryDefدسترسي به ركوردهاي جدول يا نتيجه سوال در اكسس بيسيك
Recordsetجدولهاي بانك اطلاعاتي
Tableنتيجه سوال كه قابل تغيير است
Dynasetنتيجه سوال كه قابل تغيير نيست
SnapshotVBA
متغيرهاي حافظه اي درمانند فيلدهاي جدول بانك اطلاعاتي متغيرها داراي نام هستند ،
VBA متغيرهاي حافظه اي دربا اين تفاوت كه در اينجا نام گذاري متغيرها بدون فاصله و علائم ويژه است
. تنها مي توان ازخط زير
(-) استفاده كرد . ضمناً ازكلمات شناخته شده دراكسس هم نمي توان به عنوان ناممتغير حافظه اي استفاده كرد
.مي توان يك متغير را به سادگي و تعيين مقدار همزمان با تعريف آن ايجاد كرد
: VBA درVarName=1234
اگر
(Variant) در اين مواقع نوع متغير بستگي به داده اي دارد كه به آن تخصيص يافته استبخواهيد آنرا كاراكتري تعريف كنيد عبارت بالا بصورت زير نوشته مي شود
:VarName%=1234
MS Office
در VBA آموزش زبانصفحه
9Visual Basic
For Application
Microsoft
Dim
گرچه روش بالا ساده است ليكن توصيه مي شود قبل از دادن مقدار به متغير ، آنرا باتعريف و نوع آنرا مشخص كنيد
. سپس داده مناسب با نوع تعيين شده به آن بدهيد . براي تمرينمتغير بالا با روش جديد، بصورت زير تعريف مي شود
:Dim
VarName As IntegerVarName=1234
Module
مي گويند . براي اينكه در يك Explicit اين روش تعريف متغيرهاي حافظه اي راOption Explicit
از Module فقط با اين روش متغير تعريف شود ، بايستي در صفحه اوليهاستفاده كنيد
. به ا ين ترتيب چنانچه نام يك متغير را اشتباهاً چيز ديگري وارد كنيد سيستم باپيغام خطا ، مانع تعريف آن متغير مي شود
. در غير اين صورت ممكن است نام يك نتغير رااشتباه تايپ كرده و برنامه را اجرا كنيد
. در اين صورت سيستم نام غلط متغير را به عنوان يكمتغير جديد برداشت كرده و رفع اشكال از برنامه را بسيار مشكل مي كند
.در ٤ سطح به شرح زير استفاده مي شوند
: VBA متغيرهاي حافظه اي درمتغيرهاي محلي
:اين متغيرها در سطح زير برنامه معتبر هستند و در ساير زير برنامه ها يا توابع از آنها نمي توان
يا بدون آن تعريف مي شوند ، فقط همانجايي كه تعريف
Dim استفاده كرد . متغير هايي كه باشده اند ، شناخته شده اند و در ديگر زير برنامه ها يا توابع شناخته شده نيستند
. تا زمانيكه زيربرنامه يا تابع مربوطه فعال است ، متغير هاي آن نيز فعال است و با بسته شدن آن زير برنامه يا
تابع، متغيرهاي مربوطه هم غير فعال شده و از حافظه خارج مي شوند
.Access
در Report و Form متغيرهاييك فرم يا گزارش متغيري را تعريف كنيد آن متغير فقط در
Module اگر در صفحه اوليههمان فرم يا گزارش شناخته شده است و با بستن آن فرم يا گزارش متغيرهاي آن هم غير فعال
ميشوند
.MS Office
در VBA آموزش زبانصفحه
10Visual Basic
For Application
Microsoft
Module
متغيرهايمستقل ، متغيري را تعريف كنيد ، آن متغير در تمام زير برنامه
Module اگر در صفحه اوليه يكمتغيرهاي آن هم غير
Module شناخته شده است و با بستن آن Module ها و توابع هماناستفاده
Module در صفحه اوليه Dim فعال مي شوند . براي تعريف اين متغيرها از روشكنيد
.Global
متغيرهاي عمومي ياها ، فرمها ، توابع و زير برنامه هاي يك بانك اطلاعاتي قابل
Module اين متغيرها در تمامModule
در صفحه اوليه يك Global استفاده هستند . براي تعريف اين نوع متغيرها از روشبصورت زير به عنوان متغير عمومي تعريف مي شود
: glVar ، استفاده مي شود. براي مثالبراي محفوظ نگه داشتن مقادير متغيرهاي محلي بين زير
: Global glVar As Integerتعريف
Static استفاده مي شود . متغيرهايي كه با Dim به جاي Static برنامه ها يا توابع ازمي شوند ، در تمام طول برنامه شناخته شده هستند ليكن قابل استفاده بودن آنها بستگي به
جايي دارد كه تعريف شده اند
. از اين متغيرها براي شمارش تعداد رخداد يك حالت ياStatic
استفاده مي شود . براي اينكه تمام متغيرهاي يك تابع يا زير برنامه از نوع Eventاستفاده كنيد
. Sub يا Function قبل از Static شود، بايستي از كلمهمتغيرهاي حافظه اي با نوع دلخواه
يك متغير مي تواند يك يا چند نوع داده اكسس را در خود نگهداري كند
. اين نوع متغيرها با…
EndType نوع دلخواه توسط برنامه نويس ساخته مي شوند . براي ايجاد نوع متغيرها بينو با فرمت زير استفاده مي شود
: TypeType DupRec
يك نام دلخواه است
DupRecField1
As LongField2
As String * 20Field3
As SingleField4
As DoubleEnd Type
MS Office
در VBA آموزش زبانصفحه
11Visual Basic
For Application
Microsoft
از اين نوع داده زماني استفاده مي شود كه بخواهيد داده هاي يك يا چند ركورد با في لدهاي
متفاوت را نگهداري كنيد
. متغيرهاي كاراكتري در اين نوع داده ها با طول ثابت هستند . برايدر تمرين قبل ٢٠ كاراكتر
(مشابه طول فيلد مورد اشاره در جدول ) Field مثال طول 2به
Static يا Global,Dim مي باشد . براي تعريف اين نوع متغيرها بايستي از همان كلماتصورت زير استفاده شود
:Dim Currentrec As DupRec
براي تخصيص داده به يكي از متغيرهاي نوع بالا از نام متغير و نقطه استفاده مي شود
:Currentrec.Field1=2048
VBA
آرايه ها دربراي نگهداري يك سري داده در يك متغير از متغيرهاي نوع آرايه استفاده م ي شود
. هر داده ازDim
بايد ار روش VBA اين سري را يك جز يا عنصر آرايه مي گويند . براي تعريف آرايه دراستفاده كرده و پس از نام متغير، داخل پرانتز تعداد عناصر آنرا قيد كرد
.Dim NewArray(20) As String
درعبارت بالا يك متغير آرايه با ٢١ عنصر ساخته شده است
. گرچه عدد ٢٠ در بالا قيد شدهليكن اولين عنصربا عدد صفر شروع مي شود
. به همين دليل تعداد عناصر آرايه ، يكي بيشتر ازآنچه در پرانتز قيد شده در نظر گرفته مي شود
. براي تعداد عناصر ثابت و دقيق به روش زيرعمل مي شود
:Dim NewArray(1 To 20) As String
در اينجا تعداد عن اصر آرايه ٢٠ خواهد بود
. اگر عددهاي تعداد عناصر را با علامت كاما جداكنيد، آرايه چند بعدي ايجاد مي شود
:Dim NewArray (9,9,9) As Long
در اين عبارت يك آرايه سه بعدي با ١٠ عنصر در هر بعد ايجاد مي شود
. ار آنجاييكه نوعاست ، ميزان فضايي كه در اين آ رايه از حافظه اشغال مي كند برابر با
Long آرايه١٠
) چهار هزار بايت خواهد بود. *١٠*١٠*٤)MS Office
در VBA آموزش زبانصفحه
12Visual Basic
For Application
Microsoft
مي توان آرايه را با تعداد عناصر شناور يا ديناميك تعريف كرد
. براي اين منظور از پرانتز خاليتعداد عن اصر
ReDim استفاده مي شود . در تمرين زير يك متغير ديناميك ايجاد شده سپس باآن را مي توان تشخيص داد
:Dim
NewArray() As LongModule
در صفحه اوليهReDim
Preserve NewArray(9,9,9)در زير برنامه، براي نگهداري مقادير قبلي
ReDim
NewArray(9,9,9)در زير برنامه، مقداردهي مجدد به تمام عناصر
براي اينك ه هميشه بخش اعظمي از حافظه درگير ضبط متغير آرايه نباشد ، مي توانيد با استفاده
مقادير عناصر آنرا به صفر تبديل كنيد
. با اين عمل وقتي نيازي به مقادير آرايه ReDim ازايجاد مي شوند ، حداكثر
Dim نداريد از حافظه تخليه مي شود . آرايه هايي كه با روشدر
Dim بدون استفاده قبلي از روش ReDim مي توانند تا ٨ بعد باشند . آرايه را مي توان بازير برنامه ايجاد كرد
. در اين صورت نوع آرايه محلي بوده و حداكثر مي تواند تا ٦٠ بعدباشد
.نام عناصر بانك اطلاعاتي به عنوان متغير حافظه اي
عناصر بانك اطلاعاتي كه در اكسس ايجاد مي كنيد مي توانند به عنوان متغير حافظه شناخت و
به آنها مقدار داد
. براي مثال اگر داده يكي از كنترلهاي روي يك فرم را بخواهيد عوض كنيد ازروش زير استفاده مي شود
:Forms!Customers!Address=
”123 Kaj Street“به عنوا ن فرم
)، سپس نام فرم Forms در اين روش ابتدا نام عنصر بانك اطلاعاتي (در اينجاو پس ار آن نام فيلد يا كنترل روي فرم اشاره مي شود
. در (Customers (در اينجاصورتيكه نام كنترل يا فرم داراي فاصله خالي باشد، بايستي در علامت
[] نوشته شود:Dim
txtContact As ControlSet
txtContact=Forms!Customers![Contact Name]txtContact =
”Alizadeh“MS Office در VBA آموزش زبان
صفحه
13Visual Basic
For Application
Microsoft
VBA
ثابتها درمي توان اين متغيرها را با كلمه
VBA ثابت پارامتري است كه مقدار آن تغيير نمي كند . دريا زير برنامه و تابع تعريف كرد
. براي مثال ، Module در صفحه اوليه Constاست
. براي اينكه يك ثابت VBA يك روش تعريف ثابت در sigPi=3.1416 Constبراي تعريف آن
Global هاي بانك اطلاعاتي استفاده شود ، بايستي از Module در تماماستفاده كرد
:Global Const sgnPi=3.1416
قابل تعريف است
. Module فقط در صفحه اوليه Global ثابتهاي نوعاينها ثا بت هايي هستند كه توسط برنامه نويس ايجاد مي شود
. علاوه بر اينها در اكسس ٧ ثابتاز پيش تعريف شده است كه عبارتند از
:Null,True,False,Yes,No,On,Off
استفاده كرد
. بقيه در ساير VBA مي توان در Null,False,True در بين اين ثابتها فقط ازقابل استفاده هستند
. يكي از كاربردهاي اين نوع ثابتها Module عناصر بانك اط لاعاتي غير ازمي باشد
. Query در عبارت شرط دروجود دارد كه براي برخي عمليات با
VBA علاوه بر ثابتهاي بالا يك سري ثابتهاي مخفي دررا
Constants شروع مي شوند . براي آشنايي با آنها DB_ و براي بانكهاي اطلاعاتي با A_جستجو و مطالعه كنيد
. (Help) VBA در راهنمايMS Office
در VBA آموزش زبانصفحه
14Visual Basic
For Application
Microsoft
VBA
عبارتهاي شرطي و تصميم گيري دروقتي تصميم گيري بين دو حالت مثبت و منفي مطرح است اغلب از
به شرح زير است
: VBA استفاده ميشود. فرمت اين روش در If…Else…EndlfIf
Mod(a,2)=1 Thenبر عدد ٢ تقسيم شود و باقيمانده داشته باشد
. a اگر متغيرMsgBox
”a is odd number“a
ارسال يك پيغام مبني بر فرد بودن متغيرElse
در غير اين صورت
MsgBox
”a is even number“a
ارسال يك پيغام مبني بر زوج بودن متغيرEnd If
MS Office
در VBA آموزش زبانصفحه
15Visual Basic
For Application
Microsoft
Select
نباشد از If چنانچه تصميم گيري بين چندين حالت متفاوت باشد و امكان استفاده ازبصورت زير استفاده مي شود
: CaseSub IfThenCondition()
sInput = InputBox("Enter a number greater than 10.")
Select Case
sInputCase Is > 10
MsgBox "You entered a number greater than 10."
Case Is = 10
MsgBox "You entered the number 10."
Case Is < 10
MsgBox "You entered a number less than 10."
End Select
End Sub
تمرين
:فرض كنيم بخواهيد ميزان فروش يا يك عدد مشابه آن را كلاس بندي كنيد
. ابتدا يك تابع بابه شرح زير است
: Case يك پارامتر و استفاده از روشFunction Class(A As Double)
Select Case
ACase Is <10000
Class=0
Case 10000 To 49999.99
Class=1
Case 50000 To 100000
Class=2
Case Else
Class=3
End Select
براي استفاده از اين تابع يك سوال از جدول فروش ايجاد و فيلدهاي مورد نظر از جمله فيلد
فروش را در اين سوال وارد كرده و در قسمت نام فيلد يك ستون جديد عبارت
اشاره به نام فيلد است كه مقادير فروش در
[sales] را وارد كنيد .در اينجا Class([sales])آن وارد شده است
.MS Office
در VBA آموزش زبانصفحه
16Visual Basic
For Application
Microsoft
VBA
ايجاد حلقه دردر برخي موارد لازم است يك سري عمليات يا فرمانها به تعداد معين يا بر اساس يك شرط
خاص تكرار شوند
. به محض رسيدن به شرط تعيين شده يا انجام به تعداد مورد نظر تكرارم عروف
Loop عمليات يا فرمانها متوقف مي شود . اين عمل در برنامه نويسي به ايجاد حلقه يااست
. براي ايجاد حلقه روشهاي متفاوتي وجود دارد كه در اينجا به آنها اشاره مي شود.For
…Nextازاين روش براي حلقه هاي تعدادي استفاده مي شود فرمت كلي آن بصورت زير است
:For
< عدد شروع=متغير شمارنده > To< عدد پايان >[Step< [<مقدارفاصلهفرمانهايي كه بايد در اين حلقه تكرار شوند
[
شرط پايان حلقه، قبل از اينكه به تعداد بالا برسد]Exit For
Next
< <متغير شمارندهدر فرمت بالا ، جاييكه از علامت
<> استفاده شده يعني اين بخش از فرمت اجباري است وآنهاييكه در علامت
[] وارد شد ه يعني اختياري است . براي مثال اگر بخواهيد يك فرمولبه صورت سري محاسبه شود و در يك آرايه ضبط شود به صورت زير
X رياضي با ده مقدارعمل مي شود
:Dim
a(1 To 10) As DoubleFunction
fun()For
X=1 To 10 Step 1A(X)= 2*X^2+3*X-3
Next
XDo While
…Loopاز اين روش براي ايجاد حلقه شرطي استفاده مي شود
. فرمانها يا عمليات مورد نظر تا زمانيكهشرط برقرار است ، تكرار مي شوند
. به محض عدم برقراري شرط يا برقراري شرط داخلي (اگرشرط داخلي منظور شده باشد
) حلقه متوقف مي شود و فرمانهاي بعد از حلقه اجرا مي شوند .فرمت كلي به صورت زير است
:Do While
شرط [=True]فرمانهايي كه بايد در اين حلقه تكرار شوند
Exit Do
Loop
MS Office
در VBA آموزش زبانصفحه
17Visual Basic
For Application
Microsoft
كار مي كند كه نيازي به نوشتن آن
(True) با فرض مثبت بودن حالت شرط VBA در اينجااستفاده كرد
. براي قيد حالت منفي در شرط حلقه False نيست. براي حالت هاي منفي نبايد ازاستفاده مي شود
. Not ازDo Until
…Loopيك روش ديگر براي ايجاد حلقه شرطي استفاده از روش بالا ا ست
. فرمانها يا عمليات موردنظر تا زمانيكه شرط برقرار نيست ، تكرار مي شوند
. به محض برقراري شرط يا برقراري شرطداخلي
(اگر شرط داخلي منظور شده باشد ) حلقه متوقف مي شود و فرمانهاي بعد از حلقهاجرا مي شوند
. فرمت كلي بصورت زير است:Do Until
شرط <> Trueفرمانهاييكه بايد در اين حلقه تكرار شوند
[
شرط پايان حلقه، يا يك شرط ديگر]Exit Do
Loop
دسترسي به عناصر بانك اطلاعاتي در اكسس بيسيك
در اكسس عناصري هستند
(Data Access Objects) DAO عناصر دسترسي به داده ها ياايجاد شده و نگهداري مي شوند
. بطور خلاصه براي دسترسي به ليست Jet Engine كه باداده ها در اكسس سه مرحله لازم است
:Workspace
دسترسي به محيط كار ياDatabase
دسترسي به بانك اطلاعاتي ياRecordset
دسترسي به ليست داده ها يادر اينجا انواع عناصر مربوط به ليست داده ها به شرح زير توضيح داده مي شود
:اشاره به جدول ضبط شده در يك بانك اطلاعاتي است
. :TableDefاشاره به سوال ضبط شده در يك بانك اطلاعاتي است
. :QueryDefاشاره به پارامتر يك سوال است
. :Parameterاشاره به فيلد در يك جدول، ايندكس، سوال ليست ركورد است
. :FieldMS Office
در VBA آموزش زبانصفحه
18Visual Basic
For Application
Microsoft
اشاره به ايندكس در يك جدول است
. :Indexاشاره به ارتباط بين فيلدهاي جدول يا سوال است
. :Relationاشاره به مشخصات يك عنصر است
. :Propertyاشاره به ليست ركوردها در يك جدول يا سوال است
. :Recordsetاشاره به يك گروه كاربر كه در حفاظت اكسس تعريف شده است
. :Groupاشاره به يك كاربر كه در حفاظت اكسس تعريف شده است
. :Userمتغير حافظه اي براي عناصر
نيز مانند ساير محيط هاي برنامه نويسي امكان تعريف انواع متغيرها وجود دارد
. براي VBA درتعريف هر متغير ابتدا با استفاده از دستورالعمل زير يك متغير ، متناسب با نوع آن فضاي لازم
را رزرو مي كند
.Dim
< نام متغير > As < < نوععددي بلند ،
(Integer) عبارتند از عددي كوتاه VBA انواع متغيرها در.(
Date) تاريخي ،(String) كاراكتري ،(Double) عددي شناور ،(Long)مرحله بعد تخصيص مقدار به متغير است
. براي اين منظور از روش زير استفاده مي شود:داده
= نام متغيرعلاوه بر اينها يك سري متغير بسيار مهم و پر مصرف هم براي ضبط عناصر بانك اطلاعاتي
وجود دارد
. اين نوع متغيرها هم براي تعريف دو مرحله دار ند: تعريف و تخصيص عنصر بهآنها
. فرمانهاي زير هر دو مرحله تعريف و تخصيص عناصر را نشان مي دهد.Dim
db As DatabasesDim
rst As RecordsetDim
frm As FromDim
ctl As Controlset
مرحله دوم تخصيص عنصر مناسب به هر يك از متغيرهاي بالا است . در اينجا از عبارتو علامت مساوي استفاده مي شود
:Set
db=DBEngine.Workspaces(0).Databases(0)Set
rst=db.Openrecordset (" ("نام جدول يا سوالSet
frm=Form! < < نام فرمSet
ctl= frm(0)MS Office
در VBA آموزش زبانصفحه
19Visual Basic
For Application
Microsoft
كار با ليست داده ها
لازم است با داده هاي جدول يا سوالها كار كنيد ،
(VBA) در بيشتر مواقع در برنامه نويسيروشهاي خاصي براي دسترسي به داده ها و مشاهده ، ويرايش، حذف و اضافه كردن آنها
VBAارائه مي كند
. دسترسي به داده ها در برنا مه نويسي غير از فعال كردن ظاهري آنها با اجرايمي گويند و به ظاهر هيچ چيزي
Recordset جدول يا سوال است . در اينجا ليست داده ها رامشاهده نمي شود بلكه از طريق برنامه ليست داده ها در دسترس قرار مي گيرد تا برنامه نويس
براي كار
Recordset هر عملي كه نياز باشد روي آنها انجام دهد . در اكسس بيسيك سه نوعبا داده ها وجود دارد كه بنا به منبع داده ها
(جدول يا سوال ) و روشهاي كار با آنها از يكي ازاين روشها استفاده مي شود
.Table
دسترسي به ليست داده ها به روشمجموعه اي از ركوردهاي يك جدول در بانك اطلاعاتي است
. در اين روش برا ي جستجويسريعتر مي توان از ايندكس استفاده كرد
. داده ها نيز قابل تغيير خواهند بود . اين روش فقط درمورد جدولهاي محلي نه الحاق شده صادق است
.Dynaset
دسترسي به ليست داده ها به روشبراي اشاره به داده هاي جدولها يا سوالها در يك
Bookmark يا pointer مجموعه اي ازبانك اطلاعاتي است
. با اين روش مي توان به داده هاي چندين جدول محلي يا الحاق شدهباشند كه قابل ويرايش نيز هستند
. SQL دسترسي پيدا كرد . اين داده ها ممكن اسن نتيجه يكدر اينجا از روش ايندكس براي جستجوي ركوردها نمي توان استفاده كرد
.ضمناً در برخيموارد ليست داده ها با اين روش قابل ويرايش نيست
. براي جستجوي ركوردها در اين نوعاستفاده مي شود
. Find ليست داده ها از روشMS Office
در VBA آموزش زبانصفحه
20Visual Basic
For Application
Microsoft
Snapshot
دسترسي به ليست داده ها به روشوجود
Snapshot اين روش كپي يا تصوير مجموعه اي از ركوردهايي است كه هنگام ايجاددارند
. بطور اختياري فقط مي تو ان روي آنها به جلو حركت كرد در نتيجه عمليات سريعترروي آنها انجام مي شود
. در اين روش داده ها قابل ويرايش نيست . قبل از برگشت كنترل بهبرنامه تمام ركوردهاي منبع داده ها خوانده مي شود
. تغييرات را در داده هايي كه در يكمحيط چند كاربره ايجاد شده اند ، منعكس نمي شود
. در اينجا از روش ايندكس برايجستجوي ركوردها نمي توان استفاده كرد
.با يك دستورالعمل و يك نوع عنصر مي توان به هر سه روش بالا به ليست داده ها
VBA دردسترسي داشت
:Dim
rst As RecordsetSet
rst=db.Openrecordset("Query يا Table نام " [ , Type [ , Options ]]SQL
ليست داده ها ممكن است از يك جدول موجود ، نتيجه يك سوال ، يا اجراي عبارتباشد
. همانطور كه در دستورالعمل بالا مشاهده مي كنيد نوع دسترسي به داده ها به اختيار قابلتعريف است
.Set
rst=db.Openrecordset("Query يا Table نام ”Db_Open_Table)Table
براي دسترسي به ليست داده ها به روشSet
rst=db.Openrecordset("Query يا Table نام ”Db_Open_Dynaset)Dynaset
براي دسترسي به ليست داده ها به روشSet
rst=db.Openrecordset("Query يا Table نام ”Db_Open_Snapshot)Snapshot
براي دسترسي به ليست داده ها به روشنزديكترين روش مناسب با منبع داده ها
VBA اگر نوع دسترسي به ليست داده ها تعيين نشودرا استفاده مي كند
. چه در صورت تعيين يك روش غلط ، هنگام اجراي برنامه با پيغام خطاروبرو مي شويد
.MS Office
در VBA آموزش زبانصفحه
21Visual Basic
For Application
Microsoft
Query
يا Table فرمانهاي دسترسي به ليست داده هاي يكهمزمان در يك برنامه مي توان به داده هاي چند جدول يا سوال مختلف دسترسي داشت و
روي آنها كارهاي مختلفي انجام داد
.Dim
db As DatabasesDim
rec1 As recordsetDim
rec2 As RecordsetSet
db= DBEngine.Workspaces(0).Databasees(0)Set
rec1= db.Openrecordset (”Table1”)Set
rec2= db.Openrecordset (”Table2”)پس از فرمانهاي مربوط به انجام عمليات روي اين ليست ها سعي كنيد ليست داده ها را
ببنديد
. براي تكميل مثال بالا از روش زير براي بستن ليست استفاده مي شود:rec1.Close
rec2.Close
ها
: Method ، ها Property چند نمونه از:
Active MethodOLE
و Range ، Window ، Chart ، Worksheet ، Workbook براي فعال كردناستفاده مي شود
.[Object.] Activate
Exp: Sheets (“Sheet2
”). Activate:
Active Cell Propertyبراي استفاده از صفات يك سلولاستفاده مي شود
.Exp : Activecell.value
MS Office
در VBA آموزش زبانصفحه
22Visual Basic
For Application
Microsoft
:
Active Sheet Or Workbook Propertyاستفاده مي شود
. Workbook و يا Worksheet براي ارجاع به اطلاعات يك[Application.]Activesheet
[Application.]Activeworkbook
Exp: Activesheet.Name
Activeworkbook.Name
:
Add Methodها و ديگر اشياء و موضوعات كاربرد دارد
. Object براي اضافه كردنSet My Object = Object.Add
Exp : Application.Workbook.Add
Seta = Activeworkbooks.Sheets.Add
:
Auto filter methodبصورت رفت و برگشتي
. Autofilter تنظيمRang.Autofilter([[[field,criteria1],operator],criteria2])
استفاده مي شود
. Or و and براي عملگرهاي منطقي Operator:
Operator مواردx1top10percent,x1top10items
x1orx1bottom 10 percent,x1 and x1 bottom 10 items
Exp: selection.autofilter field:=,criteria1:=”1/1/97”
Selection.autofilter.toggles autofilter off
Cells method
براي دسترسي سطري و ستوني به اطلاعات يك سلول
.Sheetname.cells(row,col)
Exp: ActiveSheet.cells(10,8).value
Close Method
.workbook
و يا window براي بستن يك[object.]close([savechanges,filename,routeworkbook])
Exp: Activeworkbook.close(true,”c:\change.xls”).
Activewindow.close
MS Office
در VBA آموزش زبانصفحه
23Visual Basic
For Application
Microsoft
Color index Property
يا فونت
. fill. رنگ مربوط به محدوده يا سلول را تغيير مي دهد[object.]colorindex=indexnum
Exp: selection.interior.colorindex=6
Copy method
مي فرستد
. Clipboard جاري را به object محتوياتObject . copy
Object . copy (destination)
Object . copy (befor,after)
Exp : selection . copy
Selection . copy (cells(5,5) )
Delete method
ويا محدوده را حذف مي كند
. Object[object.] Delete
[object.] Delete (shift) shift : xlshift to left
xlshift up
Exp : cells(1,1) . Delete
cells(1,1) . EntireRow . Delete
Display Alerts Property
صفتي كه تعيين مي كند آيا هشدارهاي تبادلي كد نمايش داده شود يا نه
.[Application .]display Alerts = turn / false
Exp : display Alerts =false
Fontstyle property
خاصيت استيل فونت را نگهداري مي كند
.Font . fontStyle = stelestring
Exp : selection , fontstyle = Bold Italic
Formula property
مشخصات فرمول يك سلول را بازيابي مي كند
.Cell. Formula=Formula
Exp : Activecell . Formula = “ =A1+10”
MS Office
در VBA آموزش زبانصفحه
24Visual Basic
For Application
Microsoft
FormulaRlCl property
تنظيم مشخصات فرمول سلول در قالب سطر و ستون
Rang . Formula RlCl = Formula
Exp : Activecell . formulaRlCl = “ =Rc[-1]+10”
Insert method
يا كاراكترهاي موجود قبل از رشته
. work book براي درج سلولها در[object . ] . Insert (shift)
[object . ] . insert (insertstring)
Exp : selection . Insert (x1shiftdown)
Activecell . EntiveRow . Insert
Move method
ها
. sheet براي حركت دادنsheet . move (befor,after )
Exp : Active sheet . move, sheets (“sheet3”)
Name property
را تغيير مي دهد
. object نامobject . Name = string
Exp : Active workbook . name
Sheets (“sheet1”) . Name = “my sheet”
Active sheet . name . name = “my sheet”
Number format property
ها و سلولها را نمايش مي دهد
. lable فرمت نمايشObject . number format = stringval
Exp : Activecell . Value =12
Activecell . number format = “General”
Activecell . number format = “hh:mm:ss m/d/yy”
Activecell . number format
=-“($# # #,# #0.00-)I[Blue]($# # #,# # 0.00)”MS Office
در VBA آموزش زبانصفحه
25Visual Basic
For Application
Microsoft
Range Object
براي دسترسي به يك يا چند سلول
.Exp :
Range (“A1”) . value = 10
Range (“A2”) =10
Range (“A3”) =”Hello”
Range (“A1 : A8”) . formula = “Rand()”
Screen Updating property
تعيين اينكه آيا ارتقاها روي صفحة نمايش داده شوند يا نه
.Application . screenupdating = true/false
Select method
.
worksheet يا object براي انتخاب سلول و ياObject . select ([replace])
Exp : sheets (“sheet3”) . select
Rang (“A1 : A8” ) . select
:
Action Propertyتعيين کننده عملی است که هنگام وقوع يک رويداد انجام می گيرد
.ActionSetting.Action = ActionType
Exp: ActivePresentation.Slides(1).Shapes(1).ActionSettings
(ppMouseOver) . Action = ppActionNextSlide
:
Hyperlink Propertyبوسيله يک ارجاع از طريق شی
Web يا يک صفحه HTTP اتصال به يک سايتوجود دارد
. Office صورت می پذيرد. اين قابليت در تمامی برنامه های HyperlinkObject.Hyperlink
Exp:
ActivePresentation.Slides(1).Shapes(1).ActionSetting(ppMouseClick)
.Action = ppActionHyperlink
ActivePresentation.Slides(1).Shapes(1).ActionSetting(ppMouseClick)
.Hyperlink.Address = "http://www.cvisual.com"
MS Office
در VBA آموزش زبانصفحه
26Visual Basic
For Application
Microsoft
:
Entry Effect Propertyتاثير متحرک سازی روی ورودی به اسلايد جاری را تعيين می کند
.EntryEffect = _effectType
Exp :
ActivePresentation.Slides(2).Shapes.Title.AnimationSetting.EntryEfe
ct = ppEffectWipeLeft
:
GoTo Slide Propertyنما را به شماره اسلايد مشخص تغيير می دهد
.View.GoToSlide(index)
Exp : Windows(1).View.GotoSlide 2
:
Address Propertyدريافت کننده خاص را نگهداری می کند
. e_mail آدرس پست الکترونيکیRecipient.Address = e_mail
Exp : Set myitem = Application.CreateItem(0)
' OlMailitem
Set myrecipient = myitem.Recipients.Add "Dan Rahmel"
Msgbox myrecipient.Address
:
OutLook تحت VBA بوسيله e_mail تمرين _ ارسال يک پست الکترونيکیساخته و دکمه
Outlook و با ظاهری شبيه محيط Refrences يک فرم به نام VBA در محيطآن کد زير را بنويسيد
: Event – Click ايجاد کرده و در cmdoutlookmail ای به نامPrivate Sub
cmdoutlookmail_Click()Dim
objobjectouylook As ObjectDim
objitem As MailItemSet
objoutlook = CreateObject("Outlook.Application")' Create OlMailItem
Set
objItem = objoutlook.CreateItem(OlMailItem)With
objitem.Subjct =
" VB Prog Ref ".To =
darn@cvisual.com.CC =
darn@Coherntdata.com.Body =
" I found this book useful ".Attachments.Add
" C:\autuexec.bat ".Send
End With
Set
objitem = NothingSet
objoutlook = NothingEnd Sub
MS Office
در VBA آموزش زبانصفحه
27Visual Basic
For Application
Microsoft
Value property
خاص نگهداري مي كند
. object مقداري را برايObject . value = value
:
VBA چند نمونه از علامتها و عبارتهاي كليدي در‘
فرمان نشانه گذاري
. هر فرمان با آن ، ناديده گرفته ميشود .’
Comment!
.
Excel در Sheet عملگر فيلد بانك اطلاعاتي و علامت هرSheet3
!C3Recordset
! fieldsnapshot
يا table ، dynaset از نوع Recordset#
تنظيم مي كند
. double عملگر متغير را بر اساسa #
Exp : a
# = 57$
نوع متغير يك رشته را تنظيم مي كند
a
$ = Dim x as string%
تنظيم مي كند
. intejer نوع متغير را معادل عدد صحيحA
% = 5/14&
عملگر تركيب يا الحاق رشته اي
.0
& 1.33 & # 1/2/97 #MS Office
در VBA آموزش زبانصفحه
28Visual Basic
For Application
Microsoft
Dim
متغيري راتعريف مي كند
.Dim
[shared]name [as[new]type][,name[as[new]type]]Dim
E as (long,currencey,single,string,…)Dim
E as integerEnd
را پايان مي دهد
. if اجرا را متوقف كرده يا يك رويداد مثل تابعEof
شرط پايان فايل را برمي گرداند
.Eof
(file_number)Exp :
Open “c:\test.txt“ For input as #1 : ? Eof(1) : b #1Do
…Loopايجاد حلقه براي انجام فرمانها
.Do
[While i until condition][Statements][Exitdo][Statements]
Loopبراي آزمايش
:Do
[statements]Loop[While i Until condition]Array
آرايه در حافظه ايجاد مي كند كه شامل مقاديري است كه در ليست پارامترها گذر داده شده
اند
.Array(Arglist)
Exp: myarray =
Array (“Mcclane”,”Gennero”,…)Beep
بيپ بلندگو
Beep
(*.wav) , (*.mid)MS Office
در VBA آموزش زبانصفحه
29Visual Basic
For Application
Microsoft
Close & Open
كليه فايلهاي باز يا مشخص شده توسط شماره فايل را مي بندد
.Close [#][filenumber%][,#]filenumber%]
Exp:
Open “c:\vbtest.txt” for output as #1 :-
Print #1,”Hello World!” : close #1
Const
مقداري را بعنوان يك ثابت اعلان مي كند
.[Global] const name=expression [,name=expression]
توابع سيستمي
) : ) VBA چند نمونه از توابع كاربردي و معمولدو گروه از توابع به نام توابع عددي و توابع رشته اي وجود دارد
. توابع عددي به همراه ثابتها، متغيرها و عبارتهاي عددي بكار مي روند ، توابع رشته اي بر روي متغيرهاي رشته اي كار
كرده ، آنه ا را به توابع عددي و برعكس تبديل مي كنند
. تعدادي از توابع پر استفاده در زيرذكر شده اند
:Cstr
عبارت دا ده شده را به يك رشته تبديل مي كند
.Cstr(expression)
Exp:
Cstr (12)
Cvar
عبارت مشخص را در انواع گوناگون برمي گرداند
.Cvar(expression)
Exp:
Cvar (“Hello”)
Cvar (int(512))
MS Office
در VBA آموزش زبانصفحه
30Visual Basic
For Application
Microsoft
ABS
– تابع قدر مطلقاين تابع قدر مطلق عدد را به دست مي آورد كه در واقع مقدار واقعي يك عدد بدون توجه به
علامت آن است
.شكل كلي اين تابع به صورت زير است
:ABS (X)
مي تواند يك ثابت و يا متغير عددي و يا يك عبارت محاسبه اي باشد
. X كه در آن:
مثال ١A= ABS(x)
برابر ١٣
– باشد . x برابر ١٣ مي باشد اگر A مقدار ذخيره شده دربرابر ٦ باشد
. x برابر ٦ مي باشد اگر A مقدار ذخيره شده درصفر باشد
. x برابر صفر مي باشد اگر A مقدار ذخيره شده در:
مثال ٢Y= ABS (10*x + 2 )
y
برابر يك باشد . مقدار ذخيره شده در x برابر ١٢ است اگر y مقدار ذخيره شده دربرابر ٣
- باشد . x برابر ٢٨ است اگراين تابع براي يافتن اختلاف بين دو عدد بدون توجه به مثبت يا منفي بودنشان مفيد است
.INT
تابعبراي بدست آور دن نزديكترين عدد صحيح به يك مقدار عددي بكار مي رود
. INT تابعاين تابع بزرگترين عدد صحيحي را كه از دست داده شده بزرگتر نباشد به دست مي دهد
.شكل كلي اين تابع به صورت زير است
:INT(x)
مي تواند يك ثابت يا متغير عددي و يا يك عبارت محاسبه اي باشد
. x كه در آن:
مثال ١A = INT (x)
١٢ باشد
. / برابر ٣٥٧ x برابر ١٢ است اگر A مقدار ذخيره شده در٤
- باشد . / برابر ٥٩ x برابر ٥- است اگر A مقدار ذخيره شده در٢٦ باشد
. / برابر ٩٩٩ x برابر ٢٦ است اگر A مقدار ذخيره شده درMS Office
در VBA آموزش زبانصفحه
31Visual Basic
For Application
Microsoft
:
مثال ٢Y = INT (2*A-4)
٥ باشد
. / برابر ٤ A برابر ٦ است اگر y مقدار ذخيره شده دركاربردهاي زيادي دارد
. يكي از آنها روند كردن يكعدد به نزديكترين عدد صحيح INT تابع٠ به هر عدد و سپس بكارگيري اين تابع عدد صحيح مورد نطر خود را به
/ است . با افزودن ٥دست خواهيد آورد
.براي اين است كه معين كنيم آيا يك عدد صحيح است يا غير صحيح
INT كاربرد ديگر تابعيك عدد صحيح باشد آنگاه
N .براي اين كار از اين حقيقت استفاده مي شود كه اگر.
N=INT(N)همان عدد ، تعيين كنيم كه عدد صحيح
INT به بيان ديگر مي توانيم با مقايسة يك عدد بااست يا خير
.قسمتهاي پس ا ز دو رقم اعشار يك عدد را قطع كرده
INT ضمناً مي توانيد با استفاده از تابعكنيد
. Round و يا عددي را تا دو رقم اعشارINT(100*x)
اگر مي خواهيد قسمتهاي اضافه عدد را تا دو رقم اعشار قطع كنيد از 100استفاده كنيد
. بعنوان مثال به ازاء :X = 475.5836
حاصل كار اين تابع برابر است با
:100*x = 47558.36
INT(100*x) = 47558
INT(100*x) /100 = 475.58
اگر مي خواهيد عددي را تا دو رقم اعشار روندكنيد از تابع به شكل زير استفاده كنيد
:INT(100*x = 0.5)/100
بعنوان مثال اگر
:X = 27.67815
آنگاه
:100*x = 2767.815
100*x + 0.5 = 2768.315
INT(100*x + 0.5) = 2768
INT(100*x + 0.5)/100 = 27.68
MS Office
در VBA آموزش زبانصفحه
32Visual Basic
For Application
Microsoft
RND
تابعاين تابع به برنامه نويس اجازه مي دهد كه اعداد تصادفي بين صفر و يك را توليد كند
. راهي، ٠
/ دقيقاً چه نتيجه اي مي دهد . اين تابع ممكن است ٦٨٣ RND وجود ندارد كه بدانيم تابع٠ باشد
– يعني هر عددي بين صفر و يك به استثناي خود اعداد صفر و / ٠ يا ٠٠٠٩٨ / يا ٠٠٨٤٧يك
.شكل كلي اين تابع به صورت زير است
:RND(X)
مي تواند يك ثابت يا متغير عددي و يا يك عبارت محاسبه اي باشد
. X كه درآنمسير اعداد تصادفي توليد شده را كنترل مي كند
. در يك نگارش X مقدار موجود درهر دفعه عدد تصادفي جديدي بين
RND صفر باشد باعث مي شود كه X اگر مقدار BASICبزرگتر از صفر باشد باعث
X اگر BASIC صفر و يك ايجاد كند . در نگارش ديگري ازصفر باشد آخرين عدد توليد شده قبلي را پس مي دهد
. X ايجاد اعداد تصادفي شده و اگرشما مي توانيد با انجان برخي عمليات محاسباتي اعداد تصادفي بزرگتر از يك توليد كنيد
.ذخيره كنيد
. به شكل زير مي y فرض كنيد مي خواهيد عددي تصارفي بين صفر و ده را درتوانيد به كامپيوتر بگوييد تا اين كار را انجام دهد
:Y = 10*RND(J)
بين صفر تا ده خواهد بود
. y بين صفر و يك است مقدار RND از آنجايي كه مقداراستفاده كنيد
. Y=9*RND(1)+ اگر عددي بين ١ و ١٠ مي خواهيد از 1هميشه اعداد
RND اغلب ممكن است بخواهيد يك عدد صحيح تصادفي ايجاد كنيد . چونرا باهم تركيب كنيد
. INT و RND اعشاري توليد مي كند براي اين كار بايد توابع:
مثال ١N=INT(500*RND(1)+1)
. (
عددي صحيح بين ١ و ٥٠٠ را خواهد داشت (به استثناي ٥٠٠ N:
مثال ٢N=100*INT(5*RND(1)+1)
عددي صحيح بين ١ و ٥٠٠ را خواهد داشت
. NMS Office
در VBA آموزش زبانصفحه
33Visual Basic
For Application
Microsoft
مفيد مي
RND ، براي توليد اعداد غير قابل پيش بيني و يا اعداد ي مثل اعداد بازيهاي شانسيباشد
.SGN
– تابع علامتاين تابع شما را قادر مي سازد كه بدانيد عدد ذخيره شده در يك متغير و يا نتيجه يك عبارت
محاسباتي مثبت است يا منفي
.شكل كلي اين تابع به صورت زير است
:SGN(X)
حاوي يك مقدار عددي است
. X كه در آنبرابر منفي يك خواهد بود
. SGN(X) كوچكتر از صفر باشد X اگرصفر خواهد بود
. SGN(X) صفر باشد X اگربرابر يك خواهد بود
. SGN(X) بزرگتر از صفر باشد مقدار X اگرSQR
تابع ريشه دوماز اين تابع براي يافتن ريشة دوم يك عدد مثبت استفاده مي شود
. ريشه دوم يك عدد منف يعددي حقيقي نبوده و با اين تابع قابل محاسبه نمي باشد
.به صورت زير است
: SQR شكل كلي تابعSQR(X)
نشان داده مي شود
. √X كه در رياضي به صورتSIN,COS,TAN
توابعبراي حل مسائل رياضي شما سه تابع مثلثاتي فوق را ارائه داده است
. BASICشكل كلي اين توابع به صورت زير است
:SIN (X)
COS (X)
TAN (X)
حاوي زاويه بر حسب راديان مي باشد
. X كه در آنهاMS Office
در VBA آموزش زبانصفحه
34Visual Basic
For Application
Microsoft
EXP
و LOG توابعاين دو تابع با لگاريتم طبيعي سر و كار دارند
. رابطه بين توان و لگاريتم در زير داده شدهاست
:Y=ex :
و log(Y)=X : در رياضيبه صورت زير است
: BASIC شكل كلي اين توابع درLOG(x)
EXP(X)
ASC
و CHR$ توابعپيش از يادگيري كاربرد اين دو تابع بايد در مورد كدهاي عددي مورد استفاده در كامپيوتر
جهت نشان دادن كاراكترها مطالبي بدانيد
. در پي تلاش جهت استاندارد نمودن نمايش داده ها،يا
EBCDIC كامپيوترها را به گونه اي طراحي نموده اند كه يكي از دو سيستم كددهيمخفف كلمات
EBCDIC . را بكار برند ASCII‘Extended Binary Coded Decimal Interchange Code’
مخفف كلمات
: ASCII و‘American Standard Code for Information Interchange’
مي باشد
.CHR$
اولين كاراكتر يك متغير رشته اي را به كد اسكي آن تبديل مي كند . تابع ASC تابععمل مي كند
. اين تابع يك كد اسكي را به يك كاراكتر تبديل ميكند . ASC دقيقاً عكس تابعبه صورت زير است
: ASC شكل كلي تابعASC(X$)
است
. در جدول ضميمه مي بينيم Computer حاوي كلمه X$ فرض كنيد متغير رشته ايقرار
A عدد ٦٧ را در A=ASC(X$) برابر ٦٧ است . بنابراين دستور c كه كد اسكي برايخواهد داد
.به صورت زيرست
: CHR$ شكل كلي تابعCHR$(X)
يك ثابت عددي و يا متغير عددي است كه ح اوي يك كد اسكي است كه به يك كاراكتر
Xسبب مي شود كه علامت كوتيشن
(“) روي صفحه تصوير نشان داده شود . CHR$(34)MS Office
در VBA آموزش زبانصفحه
35Visual Basic
For Application
Microsoft
هم يشه در
CHR$(X) در يك متغير عددي ذخيره شده و ASC(X$) بخاطر داشته باشيد كهيك متغير رشته اي ذخيره مي گردد
.براي نشان دادن كاراكترهاي خاص و يا كاراكترهاي گرافيكي بر روي صفحه
CHR$ تابعتصوير بسيار مفيد مي باشد
.در مواقعي كه برنامه بايد با كاراكترهاي غير معمول سرو كار داشته باشد مفيد است
ASC تابعمي باشد كه به منظور خاصي به كار مي
Esc . مثلاً صفحه كليد بيشتر كام پيوترها داراي كليدرود
. وقتي اين كليد فشرده شود يك كاراكتر معمولي را ايجاد نمي كند بلكه كد اسكي ٢٧ راايجاد ميكند
. اگر مي خواهيد فشرده شدن اين كليد را در برنامه بررسي كنيد مي توانيددستورات زير را مورد استفاده قرار دهيد
:I F ASC (x $ ) = 27 THEN ….
Esc
پس از اجرا كاراكتر رشته ورودي را تست كرده و بررسي مي كند كه آيا برابر كد اسكيكه ٢٧ است مي باشد يا خير
.RIGHT$
و MID$ و LEFT$ توابعاين توابع به شما اجازه ميدهند كه يك متغير رشته اي ره به رشته هاي كوچكتر يا فرعي تقسيم
كنيد
.به كامپيوتر مي گويد كه به تعداد معيني از كاراكترها كه از انتهاي چپ رشته
LEFT$ تابعكاراكتري شروع مي شوند رجوع نمايد
.شما را آماده مي كند كه به تعداد معيني از كاراكتدها كه از سمت راست رشته
RIGHT$ تابعشزوع مي شوند دستيابي پيدا كنيد
.به صورت زير است
: LEFT$ شكل كلي تابعLEFT$ (X$,N)
متغير رشته اي است كه مي خواهيد آنرا تقسيم كنيد
. X$شروع مي شوند
. X$ تعداد كاراكترهايياست كه از سمت چپ متغير NMS Office
در VBA آموزش زبانصفحه
36Visual Basic
For Application
Microsoft
مثال
:X$ = “GOOD EVENING”
است
. ”GOOD “ حاوي كاراكترهاي LEFT$(X$,4)است
. ”GO “ حاوي كاراكترهاي LEFT$(X$,2)است
. ”GOOD EVE“ حاوي كاراكترهاي LEFT$(X$,8)به صورت زير است
: RIGHTS شكل كلي تابعRIGHT$(X$,N)
متغير رشته اي است كه مي خواهيد آن را تقسيم كنيد
. X$شروع مي شوند
. X$ نشان دهنده تعداد كاراكترهايي است كه از سمت راست N:
Excel VBA چند برنامه نمونه براي تمرين در محيطو يافتن مقادير يك بانك در بانك ديگر و جاگذاري فيلدهاي
Excel برنامه مقايسه دو بانكموردنظر
:Sub find ()
For i=1 to 200
For j=2 to 100
If cells(i,1).value= cells (j,10).value then
Cells(j,11).select
Cells (i,6).value=selection
Exitfor
Endif
Next j
Next I
Endsub
برنامه حذف ده رديف
:Sub earase()
For i=2 to 10
i=i-1
astr=cstr(i) + “:” + cstr(i)
Rows(astr).select
Selection.delete shift :=xlup
Next I
Endsub
MS Office
در VBA آموزش زبانصفحه
37Visual Basic
For Application
Microsoft
:
Access و VBA در SQL برنامه نويسييك زبان عمومي و بسيار رايج براي دسترسي به داده ها در انواع كامپيوترهاي امروزي
SQLو همچنين برنامه نويسي
Query است . اين زبان يك روش پيشرفته و قوي براي ا يجاد انواعاين زبان را پشتيباني كرده و امكان كار با
Ms Access . مي باشد VBA در محيطوجود
SQL دستورالعملهاي آن را در خود فراهم كرده است . در مجموع سه نوع استانداردبا جز ئي تغيير
) ، ) SQL- رايجترين استاندارد در حال حاضر ) ، 89 ) SQL- دارد : 86را
SQL- و برخي عناصر 92 SQL-89 ، Ms Access . ( با تغييرات عمده ) SQL-92پشتيباني مي كند
.را پشتيباني مي كنند ، داراي خط فرمان يا
SQL برخلاف ساير برنامه ها كه Access دربراي اج راي آنها
Enter و زدن كليد SQL محيط مشابه براي نوشتن مستقيم فرمانهاي مستقيماستفاده
Query از محيط مربوطه در طراحي SQL ندارد . براي نوشتن يا مشاهده فرمانهاييا نمايش ليست داده
Q uery از فرمان اجراي SQL مي شود . براي مشاهده نتيجه عبارتهايهاي آن استفاده مي شود
.:
SELECT فرمانيعني همه چيز
. با فراگي ري اين عبارت و تمام پارامترهاي آن ، در واقع SQL در SELECTرا فرا گرفته ايد
. اين عبارت ركوردهاي داده ها را انتخاب و به صورت SQL مي توان گفتبه شرح
elect S نمايش مي دهد . دستورالعمل اصلي عبارت Daynaset يك ليست از نوعزير است
:SELECT
نام فيلدهاFROM
نام جدول[WHERE [
شرط[ ORDER BY [
ترتيب بنديدر
SQL براي مشاهده محيط برنامه نويسيدر محيط
Query پس از طراحي ، Accessرا از ميان آيتمهاي دكمه
SQL گزينه Designبالاي صفحه انتخاب كنيد
. VeiwMS Office
در VBA آموزش زبانصفحه
38Visual Basic
For Application
Microsoft
اجباري و بقيه اختياري است
. FROM و SELECT همانگونه كه مشاهده مي كنيد ، عبارتهايبه شرح زير ارائه مي شود
. SELECT در اينجا هريك از پارامترهايSELECT
عبارتدر اينجا هم از
QBE با اين عبارت فيلدهاي نمايشي در سئوال مشخص مي شود . مانند روشستاره يعني تمام ركوردها مي توان استفاده كرد
.SELECT *
يعني تمام ركوردهاSELECT lastname
يعني فقط فيلد فايل ليست شوديا
:SELECT [ Customer # ] ,LastName,Firstname
در آخرين عبارت به دليل استفاده از علامت ويژه
# همراه با نام فيلد از علامت [ ] استفادهشده است
. البته تمام نام فيلدها را مي توان با علامت [ ] همراه نمود .براي تغيير عنوان فيلد هنگام نمايش از روش زير استفاده مي شود
:SELECT[Customer#] As ID
، [Lastname] &'' ''& [Customer Name];اگر از بيش از يك جدول مي خواهيد استفاده كنيد لازم است از نام جدول ، همراه با نام فيلد
كه بطور خودكار توسط اكسس ساخته مي شود نام فيلد همراه با
SQL استفاده كنيد . عبارتtblOrder
با نام جدول يعني Customer # نام جدول است . براي مثال اگر بخواهيد فيلدنوشته شود بصورت زير خواهد بود
:SELECT tblOrder
. [ Customer # ]MS Office
در VBA آموزش زبانصفحه
39Visual Basic
For Application
Microsoft
FROM
عبارتبا اين عبارت نام جدول يا سئوالي كه ركوردهاي آن انتخاب مي شود مشخص مي گردد
. اگراز بيش از يك جدول نام برده مي شود بايستي نوع ارتباط آنها هم مشخص شود
. در اينارتباط توضيحات لازم در ادامه همين فص ل آمده است
. در اينجا براي سادگي كار از يكجدول نام برده مي شود
.SELECT *
FROM tblOrder ;
انتخاب مي شوند
. tblOrder تمام ركوردهاي جدولSELECT [Order #] , [Order Date]
FROM tblOrder ;
در اينجا فقط دو فيلد از جدول بالا ليست مي شود
.در اينجا هم مي توان براي نام جدول يا جدولها يك نام كوتاه يا موقت
SELECT مانندتعريف كرد
.SELECT [Order #] , [Order Date]
FROM tblOrder As T1;
WHERE
عبارتاستفاده مي شود
. اين عبارت اختياري است و WHERE براي وارد كردن شرط در سئوال ازشبيه رديف
WHERE تمام ركور دها را نمايش مي دهد . عبارت WHERE بدون SELECTبه شرح زير
SELECT است . فرمت اين بخش از QBE در ( OR ) شرط و رديف بعدياست
:WHERE
شرط ١ [ AND / OR [[…,] شرط ٢براي مثال اگر بخواهيد به مثالهاي قبلي يك شرط اضافه كنيد به روش زير عمل مي شود
:SELECT [Order #] , [Order Date]
FROM tblOrder
WHERE [Order Taker #] = 2;
MS Office
در VBA آموزش زبانصفحه
40Visual Basic
For Application
Microsoft
به مثالهاي زير توجه كنيد
: SELECT براي آشنايي بيشتر با اين بخش ازWHERE [Customer #] = 4
WHERE Sex ='' Female'' AND Age BETWEEN 21 AND 29
WHERE LastName IS NOT NULL OR (LastName IS NOT NULL AND
FirstName = '' joe'' )
WHERE OrderDate > DateAdd("yyy", -1 , Date0)
است ليكن برخي موارد خاص را به
QBE گرچه آنچه مشاهده كرديد شبيه روش شرط درشرح زير بخاطر بسپاريد
:•
عبارت نوع متن را در علامت '' يا ' وارد كنيد .WHERE LastName '' Jones ''
•
عبارت نوع تاريخي رادر علامت # وارد كنيد.WHERE OrderDate > # 4/15/95 #
استفاده كنيد
. Like • وقتي به علامت ستاره يا ? در عبارت شرط اشاره مي كنيد ، ازWHERE FirstName LIKE ''P*''
ORDER BY
عبارتاستفاده مي شود
. اين عبارت نيز SELECT براي مرتب سازي ركوردها از اين عبارت درDESC
و مرتب سازي نزولي از ASC اختياري است . براي مرتب سازي صعودي از كلمهاستفاده مي شود
. فرمت اين عبارت بصورت زير است :ORDER BY
ستون ١ [ASC/ DESC][, ستون ٢ [ASC/ DESC][,...]]براي آشنايي بيشتر به يك مثال بشرح زير توجه كنيد
:SELECT *
FROM tb/Customer
ORDER BY LastName , FirstName
(
Related Tables ) جدولهاي مرتبطآنها را نيز در
( Relation ) هنگام استفاده از بيش از يك جدول در سئوال بايستي ارتباطتعريف كرد
. علاوه بر اين در اشاره به نام فيلدها ، بايستي نام جدول مربوطه را SQL عبارتهم تايپ كنيد
. فرمت عمومي براي استفاده از چند جدول و اشاره به ارتباط آنها بشرح زيراست
:MS Office
در VBA آموزش زبانصفحه
41Visual Basic
For Application
Microsoft
SELECT
ليست فيلدهاFROM table1 INNER / LEFT [OUTER] / RIGHT [OUTER] JOIN table2
ON table1 . column1 = table2.column2;
مقادير و ركوردهاي تكراري
مي تو ان با استفاده از عبارتهاي زير وضعيت نمايش ركوردهاي نتيجه
SELECT بعد از كلمهرا مشخص كرد
:ALL
•است
. با اين فرمان تمام ركوردهاي مطابق شرط S ELECT ALL فرمت اين مشخصه فيلدهاو
Uniquevalues > NO نمايش داده مي شوند . اين روش شبيه مشخصاتدر پنجره مشخصات مي باشد
. UniqueRecords > NODISTINCT
•است
. با اين فرمان از تكرار ركوردها SELECT DISTINCT فرمت اين مشخصه فيلدهاجلوگيري مي شود
. شرط تكرار در اينجا داده هاي فيلدهاي منظور شده در فرمان است . اگربيش از يك ستون در فرمان منظور شده باشد ، تكرار در تمام ستونها تشخيص داده شده و از
تكرار ركوردها جلوگيري مي شود
. نتيجه اين نوع سئوال قابل ويرايش نيست و به همين دليلفقط در موارد خاص بايد از آن استفاده كرد
. استفاده از اين فرمان شبيه مشخصهدر پنجرا مشخصات سئوال است
. UniqueRecords > YESDISTINCTROW
•است
. با اين فرمان از تكرار SELECT DISTINCTROW فرمت اين مشخصه فيلدهاركوردها جلوگيري مي شود
. شرط تكرار در اينجا داده هاي تمام فيلدهاي جدول مبدأ است .اگر يك يا بيش از يك ستون در فرمان منظور شده باشد ، تكرار در تمام فيلدهاي جدول مبدأ
تشخيص داده شده و از تكرار فيلدها جلوگيري مي شود
. نتيجه اي ن نوع سئوال قابل ويرايشدر پنجره مشخصات
UniqueRecords > YES است . استفاده از اين فرمان شبيه مشخصهسئوال است
. در بيشتر مواقع از اين فرمان استفاده مي شود .MS Office
در VBA آموزش زبانصفحه
42Visual Basic
For Application
Microsoft
(
Debugging ) كنترل برنامه ها از طريق خطاگيري و اشكال زدائيهر برنامه نويسي نياز دارد تا اشكال گيري و چگونگي يافتن خطاها را در برنامه ها و كد
بياموزد
. براي اين كار راههاي مختلفي وجود دارد . روش VBA نويسي هاي خود در محيطكردن در محيط
Debug يكي از بهترين و ساده ترين متدهاي Break Pointاست
. Visual Basic: (
Break Point ) روش نقطه توقفوقتي ويژوال بيسيك ، برنامه شما را اجرا مي كند شما مي توانيد نتيجه اجراي هر خط از
را
F فرمانهاي خود را ببينيد و مقداردهي متغيرهاي خود را ارزيابي كنيد . اگر شما دكمه 5قرار
Run Mode فشار دهيد ، كد برنامه شمااجرا مي شود و ويژوال بيسيك در حالترا فشار دهيد مي توانيد خط به خط اجراي برنامه را كنترل كنيد ،
F مي گير د ولي اگر كليد 8مي باشد
. اگر در جريان اجراي Break Mode در اين حالت ويژوال بيسيك در حالتToggle
) را بفشاريد F برنامه بخواهيد كنترل خط به خط برنامه را ببينيد ، بايد كليد 9MouseOver
شدن خط برنامه شما مي توانيد با HighLight در صورت . ( BreakPointكردن بر روي هر كدام از متغيرها ، مقدار فعلي آن را ببينيد
.MS Office
در VBA آموزش زبانصفحه
43Visual Basic
For Application
Microsoft
Break
روشهاي بسياري براي مشاهده مقادير متغيرها در برنامه ها وجود دارد که در حالتبا حرکت موس بر روی متغيرها
( HighLight ) اگر خط مورد نظر روشن شود Modeمی توانیدببینید
. در اين حالت شما Data Tips Window مقادیر فعلی آنها درادامه برنامه را دنبال
F موس به خط بعدی و فشردن کليد 5 ( Drag ) می توانيد با کشيدننيز به کنترل خط به خط ادامه دهيد
) F کنيد . ( می توانيد با فشردن کليد 8نکته
:را مشاهده
Data Tips اگر پنجرهنکرديد می توانيد از مسير زير
:Tools / Option / Editor ( Tab )
را فعال کنيد
. Auto Data Tips گزينهMS Office
در VBA آموزش زبانصفحه
44Visual Basic
For Application
Microsoft
سه پنجره ديگر را نيز جهت نمايش مقادير فعلی متغيرها در زمان اجرای برنامه فراهم
VBAآوده است که عبارتند از
:.
Immediate و Locals و Watch پنجره هایمتغير را از
Break Mode شما می توانيد در حالت Watch Window برای استفاده ازکنيد
. پنجره Drag , Watch Window محيط برن امه انتخاب کرده و با موس به پنجرهمی باشد از اين نظر که مقادير درون آن با جريان برنامه
Watch نيز شبيه پنجره Localsمی شود
. Update بصورت اتوماتيکOutLine
های مختلف را در يک محيط Module شما می توانيد مقادير متغيرهای مختلف(
در کنار هر عنوان علامت (+)ای برای نمايش زير عنوانهای آن وجود دارد ) در صورت عدمآن را فعال کنيد
. View مشاهده اين پنجره از منویاست که امکانات بيشتری در زمينه کنترل برنامه و خطايابی در
Immediate پنجره سومکردن متغير به درون پنجره
Paste و Copy اختيار کاربر قرار می دهد . شما می توانيد باImmediate
در Paste کرده و پس از Copy مقدار آن را ببينيد و يا کل خط جاری رارا بفشاريد تا نتيجه آن را ببينيد
. Enter در انتهای آن کليد WindowMS Office
در VBA آموزش زبانصفحه
45Visual Basic
For Application
Microsoft
های پنهان شده در برنامه می توانيد کد زير را در يک
Sheet برای نمايان کردن تمامیبنويسيد
: ModuleSub Un_Hide_All ()
Dim sh As Worksheet
For Each sh In Worksheets
Sh.Visible = True
Next
End Sub
برای يافتن و انتخاب يک محدوده از تاريخهايی که بر اساس روز و ماه و سال فرمت بندی
بنويسيد
: Module شده باشند کد زير را در يکSub Find Dates()
On
Error GoTo errorHandlerDim
startDate As StringDim
stopDate As StringDim
startRow As IntegerDim
stopRow As IntegerstartDate =
InputBox("Enter the Start Date : (mm/dd/yy)")If
startDate = "" ThenEnd
stopDate =
InputBox("Enter the Stop Date : (mm/dd/yy)")If
stopDate = "" ThenEnd
startDate =
Format(startDate , :mm/dd/yy")stopDate =
Format(stopDate , :mm/dd/yy")startRow =
Worksheets
("Table").Columns("A").Find(startDate,lookin:=xlValues,lookat:=xlWhole).
RowstopRow =
Worksheets
("Table").Columns("A").Find(stopDate,lookin:=xlValues,lookat:=xlWhole).
RowDestination:=
Worksheets("Report").range("A")End
ErrorHandler:
MsgBox
" There has been an error : " & Error() & Char(13) &"Ending
Sub ……….Please Try Again",48End Sub

