تبليغاتX
بهترین ها - آموزش VB
 

صفحه 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 آموزش زبان

صفحه 4

Visual Basic

For Application

Microsoft

اگر بخواهيد تابعي را اجرا كنيد و يا فر ماني بدهيد كه ورودي هاي آن چند آرگومان مي باشد

به شما راهنمايي كرده و نوع آرگومانهايي را كه بايد وارد كنيد به شما نشان مي دهد . VBA

انجام چند تمرين ساده :

بنويسيد و نتيجه آن MSWord نرم افزار VBA حال با كمي دقت برنامه هاي زير را در محيط

را ببينيد :

MS Office در VBA آموزش زبان

صفحه 5

Visual 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 آموزش زبان

صفحه 6

Visual 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 آموزش زبان

صفحه 7

Visual Basic

For Application

Microsoft

Functions

توابع يك نوع زير برنامه هستند كه با اشاره به نام آنها يك داده يا نتيجه ارائه مي كنند.

Module ساخته مي شوند . براي ايجاد يك تابع در صفحه اوليه Module توابع عمدتاً در

را بزنيد . با اين عمل يك Enter سپس يك نام دلخواه را تايپ و كليد Function كلمه

صفحه جديد باز مي شود كه شبيه فرمت زير است.

Function ([پارامترهاي تابع]) نام تابع

شروع فرمانهاي تابع

. . . .

. . . .

. . . .

پايان فرمانهاي تابع

End Function

فرم يا كنترلهاي آن و همچنين در Event توابع ممكن است داراي پارامتر نباشند . از توابع در

علامت مساوي سپس نام Event گزارش استفاده مي شود . براي اين منظور بايستي در مقابل

تابع را بنويسيد . اگر تابع پارامتر ندارد ، بعد از نام تابع فقط علامت پرانتز باز و بسته ، در غير

اين صورت بايستي پارامترهاي آنرا به ترتيب داخل پرانتز وارد كرد .

MS Office در VBA آموزش زبان

صفحه 8

Visual Basic

For Application

Microsoft

هم ب ه عنوان Access انواع مختلف عناصر بانك اطلاعاتي نرم افزار VBA علاوه بر اين در

متغير حافظه اي شناخته مي شوند . جدول زير اين متغيرها و معادل آنها در بانك اطلاعاتي را

نشان مي دهد:

متغير حافظه اي عنصر معادل در بانك اطلاعاتي

بانك اطلاعاتي در اكسس Database

فرم و زير فرم Form

گزارش و زير گزارش Report

كنترلهاي روي فرم و گزارش Control

طراحي سوال QueryDef

دسترسي به ركوردهاي جدول يا نتيجه سوال در اكسس بيسيك Recordset

جدولهاي بانك اطلاعاتي Table

نتيجه سوال كه قابل تغيير است Dynaset

نتيجه سوال كه قابل تغيير نيست Snapshot

VBA متغيرهاي حافظه اي در

مانند فيلدهاي جدول بانك اطلاعاتي متغيرها داراي نام هستند ، VBA متغيرهاي حافظه اي در

با اين تفاوت كه در اينجا نام گذاري متغيرها بدون فاصله و علائم ويژه است . تنها مي توان از

خط زير (-) استفاده كرد . ضمناً ازكلمات شناخته شده دراكسس هم نمي توان به عنوان نام

متغير حافظه اي استفاده كرد.

مي توان يك متغير را به سادگي و تعيين مقدار همزمان با تعريف آن ايجاد كرد: VBA در

VarName=1234

اگر (Variant) در اين مواقع نوع متغير بستگي به داده اي دارد كه به آن تخصيص يافته است

بخواهيد آنرا كاراكتري تعريف كنيد عبارت بالا بصورت زير نوشته مي شود:

VarName%=1234

MS Office در VBA آموزش زبان

صفحه 9

Visual Basic

For Application

Microsoft

Dim گرچه روش بالا ساده است ليكن توصيه مي شود قبل از دادن مقدار به متغير ، آنرا با

تعريف و نوع آنرا مشخص كنيد . سپس داده مناسب با نوع تعيين شده به آن بدهيد . براي تمرين

متغير بالا با روش جديد، بصورت زير تعريف مي شود:

Dim VarName As Integer

VarName=1234

Module مي گويند . براي اينكه در يك Explicit اين روش تعريف متغيرهاي حافظه اي را

Option Explicit از Module فقط با اين روش متغير تعريف شود ، بايستي در صفحه اوليه

استفاده كنيد . به ا ين ترتيب چنانچه نام يك متغير را اشتباهاً چيز ديگري وارد كنيد سيستم با

پيغام خطا ، مانع تعريف آن متغير مي شود . در غير اين صورت ممكن است نام يك نتغير را

اشتباه تايپ كرده و برنامه را اجرا كنيد . در اين صورت سيستم نام غلط متغير را به عنوان يك

متغير جديد برداشت كرده و رفع اشكال از برنامه را بسيار مشكل مي كند.

در ٤ سطح به شرح زير استفاده مي شوند: VBA متغيرهاي حافظه اي در

متغيرهاي محلي :

اين متغيرها در سطح زير برنامه معتبر هستند و در ساير زير برنامه ها يا توابع از آنها نمي توان

يا بدون آن تعريف مي شوند ، فقط همانجايي كه تعريف Dim استفاده كرد . متغير هايي كه با

شده اند ، شناخته شده اند و در ديگر زير برنامه ها يا توابع شناخته شده نيستند . تا زمانيكه زير

برنامه يا تابع مربوطه فعال است ، متغير هاي آن نيز فعال است و با بسته شدن آن زير برنامه يا

تابع، متغيرهاي مربوطه هم غير فعال شده و از حافظه خارج مي شوند.

Access در Report و Form متغيرهاي

يك فرم يا گزارش متغيري را تعريف كنيد آن متغير فقط در Module اگر در صفحه اوليه

همان فرم يا گزارش شناخته شده است و با بستن آن فرم يا گزارش متغيرهاي آن هم غير فعال

ميشوند.

MS Office در VBA آموزش زبان

صفحه 10

Visual 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 نوع دلخواه توسط برنامه نويس ساخته مي شوند . براي ايجاد نوع متغيرها بين

و با فرمت زير استفاده مي شود: Type

Type DupRec

يك نام دلخواه است DupRec

Field1 As Long

Field2 As String * 20

Field3 As Single

Field4 As Double

End Type

MS Office در VBA آموزش زبان

صفحه 11

Visual 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 آموزش زبان

صفحه 12

Visual Basic

For Application

Microsoft

مي توان آرايه را با تعداد عناصر شناور يا ديناميك تعريف كرد . براي اين منظور از پرانتز خالي

تعداد عن اصر ReDim استفاده مي شود . در تمرين زير يك متغير ديناميك ايجاد شده سپس با

آن را مي توان تشخيص داد:

Dim NewArray() As Long

Module در صفحه اوليه

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 Control

Set txtContact=Forms!Customers![Contact Name]

txtContact =Alizadeh

MS Office در VBA آموزش زبان

صفحه 13

Visual 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 آموزش زبان

صفحه 14

Visual Basic

For Application

Microsoft

VBA عبارتهاي شرطي و تصميم گيري در

وقتي تصميم گيري بين دو حالت مثبت و منفي مطرح است اغلب از

به شرح زير است: VBA استفاده ميشود. فرمت اين روش در IfElseEndlf

If Mod(a,2)=1 Then

بر عدد ٢ تقسيم شود و باقيمانده داشته باشد. a اگر متغير

MsgBox a is odd number

a ارسال يك پيغام مبني بر فرد بودن متغير

Else

در غير اين صورت

MsgBox a is even number

a ارسال يك پيغام مبني بر زوج بودن متغير

End If

MS Office در VBA آموزش زبان

صفحه 15

Visual Basic

For Application

Microsoft

Select نباشد از If چنانچه تصميم گيري بين چندين حالت متفاوت باشد و امكان استفاده از

بصورت زير استفاده مي شود: Case

Sub IfThenCondition()

sInput = InputBox("Enter a number greater than 10.")

Select Case sInput

Case 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 A

Case 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 آموزش زبان

صفحه 16

Visual Basic

For Application

Microsoft

VBA ايجاد حلقه در

در برخي موارد لازم است يك سري عمليات يا فرمانها به تعداد معين يا بر اساس يك شرط

خاص تكرار شوند . به محض رسيدن به شرط تعيين شده يا انجام به تعداد مورد نظر تكرار

م عروف Loop عمليات يا فرمانها متوقف مي شود . اين عمل در برنامه نويسي به ايجاد حلقه يا

است. براي ايجاد حلقه روشهاي متفاوتي وجود دارد كه در اينجا به آنها اشاره مي شود.

ForNext

ازاين روش براي حلقه هاي تعدادي استفاده مي شود فرمت كلي آن بصورت زير است:

For< عدد شروع=متغير شمارنده > To< عدد پايان >[Step< [<مقدارفاصله

فرمانهايي كه بايد در اين حلقه تكرار شوند

[شرط پايان حلقه، قبل از اينكه به تعداد بالا برسد]

Exit For

Next < <متغير شمارنده

در فرمت بالا ، جاييكه از علامت <> استفاده شده يعني اين بخش از فرمت اجباري است و

آنهاييكه در علامت [] وارد شد ه يعني اختياري است . براي مثال اگر بخواهيد يك فرمول

به صورت سري محاسبه شود و در يك آرايه ضبط شود به صورت زير X رياضي با ده مقدار

عمل مي شود:

Dim a(1 To 10) As Double

Function fun()

For X=1 To 10 Step 1

A(X)= 2*X^2+3*X-3

Next X

Do WhileLoop

از اين روش براي ايجاد حلقه شرطي استفاده مي شود . فرمانها يا عمليات مورد نظر تا زمانيكه

شرط برقرار است ، تكرار مي شوند . به محض عدم برقراري شرط يا برقراري شرط داخلي (اگر

شرط داخلي منظور شده باشد ) حلقه متوقف مي شود و فرمانهاي بعد از حلقه اجرا مي شوند .

فرمت كلي به صورت زير است:

Do While شرط [=True]

فرمانهايي كه بايد در اين حلقه تكرار شوند

Exit Do

Loop

MS Office در VBA آموزش زبان

صفحه 17

Visual Basic

For Application

Microsoft

كار مي كند كه نيازي به نوشتن آن (True) با فرض مثبت بودن حالت شرط VBA در اينجا

استفاده كرد . براي قيد حالت منفي در شرط حلقه False نيست. براي حالت هاي منفي نبايد از

استفاده مي شود. Not از

Do UntilLoop

يك روش ديگر براي ايجاد حلقه شرطي استفاده از روش بالا ا ست. فرمانها يا عمليات مورد

نظر تا زمانيكه شرط برقرار نيست ، تكرار مي شوند . به محض برقراري شرط يا برقراري شرط

داخلي (اگر شرط داخلي منظور شده باشد ) حلقه متوقف مي شود و فرمانهاي بعد از حلقه

اجرا مي شوند. فرمت كلي بصورت زير است:

Do Until شرط <> True

فرمانهاييكه بايد در اين حلقه تكرار شوند

[ شرط پايان حلقه، يا يك شرط ديگر]

Exit Do

Loop

دسترسي به عناصر بانك اطلاعاتي در اكسس بيسيك

در اكسس عناصري هستند (Data Access Objects) DAO عناصر دسترسي به داده ها يا

ايجاد شده و نگهداري مي شوند. بطور خلاصه براي دسترسي به ليست Jet Engine كه با

داده ها در اكسس سه مرحله لازم است:

Workspace دسترسي به محيط كار يا

Database دسترسي به بانك اطلاعاتي يا

Recordset دسترسي به ليست داده ها يا

در اينجا انواع عناصر مربوط به ليست داده ها به شرح زير توضيح داده مي شود:

اشاره به جدول ضبط شده در يك بانك اطلاعاتي است. :TableDef

اشاره به سوال ضبط شده در يك بانك اطلاعاتي است. :QueryDef

اشاره به پارامتر يك سوال است. :Parameter

اشاره به فيلد در يك جدول، ايندكس، سوال ليست ركورد است. :Field

MS Office در VBA آموزش زبان

صفحه 18

Visual Basic

For Application

Microsoft

اشاره به ايندكس در يك جدول است. :Index

اشاره به ارتباط بين فيلدهاي جدول يا سوال است. :Relation

اشاره به مشخصات يك عنصر است. :Property

اشاره به ليست ركوردها در يك جدول يا سوال است. :Recordset

اشاره به يك گروه كاربر كه در حفاظت اكسس تعريف شده است. :Group

اشاره به يك كاربر كه در حفاظت اكسس تعريف شده است. :User

متغير حافظه اي براي عناصر

نيز مانند ساير محيط هاي برنامه نويسي امكان تعريف انواع متغيرها وجود دارد . براي VBA در

تعريف هر متغير ابتدا با استفاده از دستورالعمل زير يك متغير ، متناسب با نوع آن فضاي لازم

را رزرو مي كند.

Dim < نام متغير > As < < نوع

عددي بلند ،(Integer) عبارتند از عددي كوتاه VBA انواع متغيرها در

.(Date) تاريخي ،(String) كاراكتري ،(Double) عددي شناور ،(Long)

مرحله بعد تخصيص مقدار به متغير است. براي اين منظور از روش زير استفاده مي شود:

داده = نام متغير

علاوه بر اينها يك سري متغير بسيار مهم و پر مصرف هم براي ضبط عناصر بانك اطلاعاتي

وجود دارد . اين نوع متغيرها هم براي تعريف دو مرحله دار ند: تعريف و تخصيص عنصر به

آنها. فرمانهاي زير هر دو مرحله تعريف و تخصيص عناصر را نشان مي دهد.

Dim db As Databases

Dim rst As Recordset

Dim frm As From

Dim ctl As Control

set مرحله دوم تخصيص عنصر مناسب به هر يك از متغيرهاي بالا است . در اينجا از عبارت

و علامت مساوي استفاده مي شود:

Set db=DBEngine.Workspaces(0).Databases(0)

Set rst=db.Openrecordset (" ("نام جدول يا سوال

Set frm=Form! < < نام فرم

Set ctl= frm(0)

MS Office در VBA آموزش زبان

صفحه 19

Visual Basic

For Application

Microsoft

كار با ليست داده ها

لازم است با داده هاي جدول يا سوالها كار كنيد ، (VBA) در بيشتر مواقع در برنامه نويسي

روشهاي خاصي براي دسترسي به داده ها و مشاهده ، ويرايش، حذف و اضافه كردن آنها VBA

ارائه مي كند . دسترسي به داده ها در برنا مه نويسي غير از فعال كردن ظاهري آنها با اجراي

مي گويند و به ظاهر هيچ چيزي Recordset جدول يا سوال است . در اينجا ليست داده ها را

مشاهده نمي شود بلكه از طريق برنامه ليست داده ها در دسترس قرار مي گيرد تا برنامه نويس

براي كار Recordset هر عملي كه نياز باشد روي آنها انجام دهد . در اكسس بيسيك سه نوع

با داده ها وجود دارد كه بنا به منبع داده ها (جدول يا سوال ) و روشهاي كار با آنها از يكي از

اين روشها استفاده مي شود.

Table دسترسي به ليست داده ها به روش

مجموعه اي از ركوردهاي يك جدول در بانك اطلاعاتي است . در اين روش برا ي جستجوي

سريعتر مي توان از ايندكس استفاده كرد . داده ها نيز قابل تغيير خواهند بود . اين روش فقط در

مورد جدولهاي محلي نه الحاق شده صادق است.

Dynaset دسترسي به ليست داده ها به روش

براي اشاره به داده هاي جدولها يا سوالها در يك Bookmark يا pointer مجموعه اي از

بانك اطلاعاتي است . با اين روش مي توان به داده هاي چندين جدول محلي يا الحاق شده

باشند كه قابل ويرايش نيز هستند . SQL دسترسي پيدا كرد . اين داده ها ممكن اسن نتيجه يك

در اينجا از روش ايندكس براي جستجوي ركوردها نمي توان استفاده كرد .ضمناً در برخي

موارد ليست داده ها با اين روش قابل ويرايش نيست . براي جستجوي ركوردها در اين نوع

استفاده مي شود. Find ليست داده ها از روش

MS Office در VBA آموزش زبان

صفحه 20

Visual Basic

For Application

Microsoft

Snapshot دسترسي به ليست داده ها به روش

وجود Snapshot اين روش كپي يا تصوير مجموعه اي از ركوردهايي است كه هنگام ايجاد

دارند . بطور اختياري فقط مي تو ان روي آنها به جلو حركت كرد در نتيجه عمليات سريعتر

روي آنها انجام مي شود . در اين روش داده ها قابل ويرايش نيست . قبل از برگشت كنترل به

برنامه تمام ركوردهاي منبع داده ها خوانده مي شود . تغييرات را در داده هايي كه در يك

محيط چند كاربره ايجاد شده اند ، منعكس نمي شود. در اينجا از روش ايندكس براي

جستجوي ركوردها نمي توان استفاده كرد.

با يك دستورالعمل و يك نوع عنصر مي توان به هر سه روش بالا به ليست داده ها VBA در

دسترسي داشت:

Dim rst As Recordset

Set 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 آموزش زبان

صفحه 21

Visual Basic

For Application

Microsoft

Query يا Table فرمانهاي دسترسي به ليست داده هاي يك

همزمان در يك برنامه مي توان به داده هاي چند جدول يا سوال مختلف دسترسي داشت و

روي آنها كارهاي مختلفي انجام داد.

Dim db As Databases

Dim rec1 As recordset

Dim rec2 As Recordset

Set db= DBEngine.Workspaces(0).Databasees(0)

Set rec1= db.Openrecordset (Table1)

Set rec2= db.Openrecordset (Table2)

پس از فرمانهاي مربوط به انجام عمليات روي اين ليست ها سعي كنيد ليست داده ها را

ببنديد. براي تكميل مثال بالا از روش زير براي بستن ليست استفاده مي شود:

rec1.Close

rec2.Close

ها : Method ، ها Property چند نمونه از

: Active Method

OLE و Range ، Window ، Chart ، Worksheet ، Workbook براي فعال كردن

استفاده مي شود .

[Object.] Activate

Exp: Sheets (“Sheet2). Activate

: Active Cell Property

براي استفاده از صفات يك سلولاستفاده مي شود .

Exp : Activecell.value

MS Office در VBA آموزش زبان

صفحه 22

Visual 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 آموزش زبان

صفحه 23

Visual 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 آموزش زبان

صفحه 24

Visual 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 آموزش زبان

صفحه 25

Visual 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 صورت می پذيرد. اين قابليت در تمامی برنامه های Hyperlink

Object.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 آموزش زبان

صفحه 26

Visual 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 Object

Dim objitem As MailItem

Set 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 = Nothing

Set objoutlook = Nothing

End Sub

MS Office در VBA آموزش زبان

صفحه 27

Visual Basic

For Application

Microsoft

Value property

خاص نگهداري مي كند . object مقداري را براي

Object . value = value

: VBA چند نمونه از علامتها و عبارتهاي كليدي در

فرمان نشانه گذاري . هر فرمان با آن ، ناديده گرفته ميشود .

Comment

!

. Excel در Sheet عملگر فيلد بانك اطلاعاتي و علامت هر

Sheet3!C3

Recordset ! field

snapshot يا 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 آموزش زبان

صفحه 28

Visual 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 integer

End

را پايان مي دهد. if اجرا را متوقف كرده يا يك رويداد مثل تابع

Eof

شرط پايان فايل را برمي گرداند.

Eof(file_number)

Exp : Open “c:\test.txt“ For input as #1 : ? Eof(1) : b #1

DoLoop

ايجاد حلقه براي انجام فرمانها .

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 آموزش زبان

صفحه 29

Visual 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 آموزش زبان

صفحه 30

Visual 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 آموزش زبان

صفحه 31

Visual 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 آموزش زبان

صفحه 32

Visual 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)

عددي صحيح بين ١ و ٥٠٠ را خواهد داشت . N

MS Office در VBA آموزش زبان

صفحه 33

Visual 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 آموزش زبان

صفحه 34

Visual 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

PRINT تبديل مي شود . بعنوان مثال كد اسكي علامت كوتيشن (“ ) برابر ٣٤ است . دستور

سبب مي شود كه علامت كوتيشن (“) روي صفحه تصوير نشان داده شود . CHR$(34)

MS Office در VBA آموزش زبان

صفحه 35

Visual 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$ تعداد كاراكترهايياست كه از سمت چپ متغير N

MS Office در VBA آموزش زبان

صفحه 36

Visual 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 آموزش زبان

صفحه 37

Visual 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

بالاي صفحه انتخاب كنيد . Veiw

MS Office در VBA آموزش زبان

صفحه 38

Visual 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 آموزش زبان

صفحه 39

Visual 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 آموزش زبان

صفحه 40

Visual 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 آموزش زبان

صفحه 41

Visual 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 > NO

DISTINCT

است . با اين فرمان از تكرار ركوردها SELECT DISTINCT فرمت اين مشخصه فيلدها

جلوگيري مي شود . شرط تكرار در اينجا داده هاي فيلدهاي منظور شده در فرمان است . اگر

بيش از يك ستون در فرمان منظور شده باشد ، تكرار در تمام ستونها تشخيص داده شده و از

تكرار ركوردها جلوگيري مي شود . نتيجه اين نوع سئوال قابل ويرايش نيست و به همين دليل

فقط در موارد خاص بايد از آن استفاده كرد . استفاده از اين فرمان شبيه مشخصه

در پنجرا مشخصات سئوال است . UniqueRecords > YES

DISTINCTROW

است . با اين فرمان از تكرار SELECT DISTINCTROW فرمت اين مشخصه فيلدها

ركوردها جلوگيري مي شود . شرط تكرار در اينجا داده هاي تمام فيلدهاي جدول مبدأ است .

اگر يك يا بيش از يك ستون در فرمان منظور شده باشد ، تكرار در تمام فيلدهاي جدول مبدأ

تشخيص داده شده و از تكرار فيلدها جلوگيري مي شود . نتيجه اي ن نوع سئوال قابل ويرايش

در پنجره مشخصات UniqueRecords > YES است . استفاده از اين فرمان شبيه مشخصه

سئوال است . در بيشتر مواقع از اين فرمان استفاده مي شود .

MS Office در VBA آموزش زبان

صفحه 42

Visual Basic

For Application

Microsoft

( Debugging ) كنترل برنامه ها از طريق خطاگيري و اشكال زدائي

هر برنامه نويسي نياز دارد تا اشكال گيري و چگونگي يافتن خطاها را در برنامه ها و كد

بياموزد . براي اين كار راههاي مختلفي وجود دارد . روش VBA نويسي هاي خود در محيط

كردن در محيط Debug يكي از بهترين و ساده ترين متدهاي Break Point

است . Visual Basic

: ( Break Point ) روش نقطه توقف

وقتي ويژوال بيسيك ، برنامه شما را اجرا مي كند شما مي توانيد نتيجه اجراي هر خط از

را F فرمانهاي خود را ببينيد و مقداردهي متغيرهاي خود را ارزيابي كنيد . اگر شما دكمه 5

قرار Run Mode فشار دهيد ، كد برنامه شمااجرا مي شود و ويژوال بيسيك در حالت

را فشار دهيد مي توانيد خط به خط اجراي برنامه را كنترل كنيد ، F مي گير د ولي اگر كليد 8

مي باشد . اگر در جريان اجراي Break Mode در اين حالت ويژوال بيسيك در حالت

Toggle ) را بفشاريد F برنامه بخواهيد كنترل خط به خط برنامه را ببينيد ، بايد كليد 9

MouseOver شدن خط برنامه شما مي توانيد با HighLight در صورت . ( BreakPoint

كردن بر روي هر كدام از متغيرها ، مقدار فعلي آن را ببينيد .

MS Office در VBA آموزش زبان

صفحه 43

Visual 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 آموزش زبان

صفحه 44

Visual 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 در انتهای آن کليد Window

MS Office در VBA آموزش زبان

صفحه 45

Visual Basic

For Application

Microsoft

های پنهان شده در برنامه می توانيد کد زير را در يک Sheet برای نمايان کردن تمامی

بنويسيد : Module

Sub 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 errorHandler

Dim startDate As String

Dim stopDate As String

Dim startRow As Integer

Dim stopRow As Integer

startDate = InputBox("Enter the Start Date : (mm/dd/yy)")

If startDate = "" Then

End

stopDate = InputBox("Enter the Stop Date : (mm/dd/yy)")

If stopDate = "" Then

End

startDate = Format(startDate , :mm/dd/yy")

stopDate = Format(stopDate , :mm/dd/yy")

startRow =

Worksheets("Table").Columns("A").Find(startDate,lookin:=xlVal

ues,lookat:=xlWhole).Row

stopRow =

Worksheets("Table").Columns("A").Find(stopDate,lookin:=xlValu

es,lookat:=xlWhole).Row

Destination:=Worksheets("Report").range("A")

End

ErrorHandler:

MsgBox " There has been an error : " & Error() & Char(13) &

"Ending Sub ……….Please Try Again",48

End Sub

نوشته شده توسط EBLIS در دوشنبه بیست و پنجم تیر 1386 ساعت 9:41 | لینک ثابت |
 
business articles