آرايه هاي چند بعدي در وي بي اي اكسل

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

DIM A(2,4,5) AS LONG

يك ارايه سه بعدي با بعد اول 2 بعد دوم 4 و بعد سوم 5 است كه عناصر آن از جنس لانگ مي باشند

آرايه ها در و ي بي اي اكسل   ARRAY IN VBA EXCEL

آرايه مجموعه اي از داده هاست كه به ترتيب در كنار يكديگر قرار مي گيرند به طور مثال A يك آرايه با 5 عضو است كه چهار تاي آن عددي و يكي از آنها متني است.

A={ 1 , 2.57 , 17 , "ALI" , 122 }

آرايه ها يا يك بعدي هستند يا چند بعدي

تعريف يك آرايه يك بعدي در وي بي اي مانند تعريف يك متغير انجام مي پذيرد :مثال

DIM A(5) AS STRING

كه در آن پس از كلمه ديم نام آرايه و انتهاي آن ذكر مي گردد و در انتها نوع داده هاي آن

آرايه ها هميشه از ابتداي صفر آغاز مي كنند به تصاوير زير دقت كنيد

 

 

توجه كنيد كه دو عنصري از آرايه كه مقدار دهي نشده اند صفر در نظر گرفته شده اند .

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

DIM ALIARR(1 TO 7) AS SINGLE

             

  كه 7 عنصر از جنس سينگل دارد با ابتداي يك aliarr يك آرايه يك بعدي با نام  

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

A(1)="ALI"

A(2)=22

A(3)="ALI TOZIH"

A(6)="REZA"

تمرين وي بي اي  VBA EXCEL

تمرين - فرض كنيد ليستي داريد به شكل زير ، كه از سلول A2  آغاز شده است . حال قصد داريم تابعي طراحي كنيم كه با ارسال سلول آغازين ليست به آن تعداد سطر هاي ليست محاسبه شود .


 

خرید کتاب الکترونیکی Excel VBA Professional Projects

بچه ها یک کتاب جدید آموزش وي بي اي اكسل را آقاي بهرام صمديان بصورت سي دي آماده كرده اند كه توصيه مي كنم حتما بخريد و مطالعه كنيد لينكش و ببينيد و استفاده كنيد .

خرید کتاب الکترونیکی Excel VBA Professional Projects

موفق باشيد .

 

ارسال يك متغير به يك ماكرو يا تابع در وي بي اي اكسل

براي جلو گيري از استفاده ي تكراري از تابع inputbox  كافي است متغيرهاي مورد استفاده را به صورت پارامتر يا آرگومان به تابع يا ماكرو ارسال كنيم ،براي اين منظور كافي است متغير ها را درون پرانتز جلوي نام تعريف كنيم :

function ali_link(a as string, b as string)

 ali_link = a & " " & b

end function

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

sub ali_text()

 msgbox ali_link("ali","tozih")

end sub

مثال هاي توابع و ماكرو ها در VBA EXCEL

مثال ۱- ماكرويي طراحي كنيد كه نام و نام خانوادگي را از كاربر گرفته سپس آنها را در كنار هم در يك جعبه پیام نشان دهد .

مثال 2 - در مثال بالا نام و نام خانوادگي زير هم در يك جعبه نام قرار گيرند ( VBCR)

مثال 3 - ماكرويي طراحي كنيد كه شعاع يك دايره را گرفته محيط و مساحت آنرا نمايش دهد.

مثال 4 - مثال بالا را با استفاده از يك ماكرو و دو تابع محيط و مساحت انجام دهيد .

مثال 5 - تابعي طراحي كنيد كه ميانگين وزني اعداد داده شده را محاسبه نمايد:

عدد   : 10   31  15  5

ضريب :2     4    7   9

توجه كنيد كه تابع بايد هر 8 عدد را دريافت كند.

مثال 6 - تابعي طراحي كنيد كه قادر باشد با دريافت ضرايب عددي معادله درجه اول ax+b=0 آنرا حل كرده جوابش را بازگرداند.

انواع عملگرها در وي بي اي اكسل   VBA EXCEL OPERATOR

Arithmetic

Comparison Logical

Exponentiation (^)

Equality (=)

Not

Negation ()

Inequality (<>)

And

Multiplication and division (*, /)

Less than (<)

Or

Integer division (\)

Greater than (>)

Xor

Modulus arithmetic (Mod)

Less than or equal to (<=)

Eqv

Addition and subtraction (+, )

Greater than or equal to (>=)

Imp

String concatenation (&)

Like
Is


توابع  FUNCTIONS  در وي بي اكسل       

از آنجا كه  ماكرو ها قادر به بازگرداندن يك مقدار به عنوان خروجي نيستند ، توابع نوع ديگري از ساختار تشكيل دهنده ماژول ها را معرفي مي كنيم:

ساختار يك تابع ( FUNCTION )  شبيه يك ماكرو است با اين تفاوت كه بجاي كلمه ي SUB  از كلمه ي FUNCTION استفاده ميشود :

(اين تابع عدد اول را به توان عدد دوم مي رساند )

FUNCTION AVW()

 DIM I AS SINGLE , J AS SINGLE

 I= INPUTBOX(" I :")

 J=INPUTBOX(" J: ")

 AVW =I ^ J

END FUNCTION

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

 

صدا زدن ماكروها CALL

براي استفاده از يك ماكرو درون ماكرو هاي ديگر كافي است ابتدا ماكرو را تعريف كرده سپس درون يك ماكرو ديگر با استفاده از كلمه ي كليدي CALL  آنرا صدا بزنيم :

SUB TEST3()

 DIM S AS STRING * 5

 S= INPUTBOX("YOUR NAME ")

END  SUB

______________________________________

SUB TEST4()

 CALL TEST3

END SUB

ماكرو TEST3 درون ماكرو TEST4 صدا زده شده است .

به اين نكته توجه كنيد كه هر گاه بخواهيم يك ماكرو فقط در همان ماژول تعريف شده ، شناخته شود كافي است قبل از كلمه ي كليدي SUB  از كلمه ي كليدي PRIVATE استفاده شود .

*  ماكرو ها به صورت پيش فرض در تمام پروژه شناخته مي شوند.

انواع متغير ها در زبان VBA در اكسل 2007

همانطور كه در جلسات قبل ذكر كرديم متغير ها در زبان وي بي اكسل چند دسته اند :

1- عددي

2- غير عددي

3- ثابت ها

4- كاربر ساخته

كه محدوده ي هر كدام را در زير مشاهده ميكنيد ( راهنماي اكسل 2007 ) :

Data Type Summary

The following table shows the supported data types, including storage sizes and ranges.

Data type Storage size Range
Byte 1 byte 0 to 255
Boolean 2 bytes True or False
Integer 2 bytes -32,768 to 32,767
Long
(long integer)
4 bytes -2,147,483,648 to 2,147,483,647
Single
(single-precision floating-point)
4 bytes -3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values
Double
(double-precision floating-point)
8 bytes -1.79769313486231E308 to
-4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values
Currency
(scaled integer)
8 bytes -922,337,203,685,477.5808 to 922,337,203,685,477.5807
Decimal 14 bytes +/-79,228,162,514,264,337,593,543,950,335 with no decimal point;
+/-7.9228162514264337593543950335 with 28 places to the right of the decimal; smallest non-zero number is
+/-0.0000000000000000000000000001
Date 8 bytes January 1, 100 to December 31, 9999
Object 4 bytes Any Object reference
String
(variable-length)
10 bytes + string length 0 to approximately 2 billion
String
(fixed-length)
Length of string 1 to approximately 65,400
Variant
(with numbers)
16 bytes Any numeric value up to the range of a Double
Variant
(with characters)
22 bytes + string length Same range as for variable-length String
User-defined
(using Type)
Number required by elements The range of each element is the same as the range of its data type.

 

اين متغير هاكه با كلمه ي كليدي DIM  معرفي مي شوند حيطه ي فعاليت ( اثر ) مشخصي دارند :

1-  متغير هاي ماكرو

2- متغير هاي ما‍‍ژول

3- متغيرهاي پرو‍ژه ( سراسري)

1- متغير هايي كه در سطح ماكرو تعريف مي شوند تنها در همان ماكرو شناخته مي شوند.

SUB TEST1()

DIM A AS SINGLE

 A=INPUTBOX(" ENTER A NUMBER :")

 MSGBOX A

END SUB

2-  اما نوع دوم متغير ها آنهايي هستند كه بايد درون تمام ماکروهای يك ماژول شناخته شوند ، براي اينكار كافي است متغير را در ابتداي ماژول قبل از تمام ماكروها ( قسمت اعلان يا DECLARATION) تعريف كرد و سپس در تمام  ماکرو های آن ماژول میتوان از آن استفاده کرد: 

 ۳- اما اگر بخواهیم این متغیر در تمام ماژول های یک پروژه شناخته شود کافی است در قسمت اعلان بجای کلمه ی dim از كلمه ي GLOBAL  استفاده كنيم .در اين حالت متغير سراسري شده و در تمام ماكرو ها ي يك پروژه شناخته مي شود.

GLOBAL S AS STRING

در ضمن بايد بدانيم كه مجموعه ماكرو ها تشكيل يك ماژول داده و مجموعه ي ماژول ها تشكيل يك پروژه را مي دهد .

نكته 1 : اگر بخواهيم درون يك ماكرو پس از اتمام آن مقادير متغير هايش تهي نشود كافي است بجاي DIM از واژه كليدي STATIC  استفاده كنيم . در اين حالت حتي پس از اتمام ماكرو مقادير متغير ايستا حفظ شده تا مقادير جديد به آن تعلق پيدا كند.

ايجاد    DEVELOPER TAB در اكسل 2007

براي كار با VBA  و ماكروها كاربران نياز به ايجاد يك تب يا برگه دان جديد دارند به نام DEVELOPER که مراحل نصب آنرا در EXCEL 2007  ملاحظه مي نماييد:

 

 

 

استفاده از معتبر سازي در يك كاربرگ ديگر  VALIDATION

استفاده از ليست هاي VALIDATION  در تنها همان كاربرگ امكان پذير است براي انتقال از يك كاربرگ به كاربرگي ديگي كافي است محدوده ي مورد نظر را نامگذاري كرده سپس به ليست منتقل كنيد.


 

 

اين حالت تنها در همان كاربرگ قابل اجراست . اما اگر محدوده ي مورد نظر را نامگذاري نماييد اينكار امكان پذير خواهد شد. 

حال اگر در يك كاربرگ ديگر بخواهيم مثلا در ستون A  فقط همين اسامي ديده شوند ؛ كافي است در قسمت LIST  ابزار VALIDATION  بجاي محدوده آدرس از گزينه ali ( نام محدوده ) استفاده كنيد .