PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : استفاده از آرایه ها در کدنویسی اکسل



shamsololama
2011/04/14, 10:19
با درود فراوان
دوستان عزیز مطالب در مورد آرایه ها و نحوه استفاده آن را در ماکرو نویسی و کدنویسی در اکسل را در این قسمت با دیگر دوستا به اشتراک بگذارید و همچنین دوستانی که در این مورد سئوالی داشتند نیز در این قسمت پرسش خود را مطرح کنند تا به آنها جواب داده شود

shamsololama
2011/04/17, 11:57
با درود فراوان

آریه ها به دو قسمت تک بعدی و چند بعدی تقسیم میشوند
در اینجا برای اینکه مفهوم و کاربرد آرایه را ساده و بهتر درک کنیم با مثال های به آن می پردازیم

زمانی که می خواهیم یک متغیر را در برنامه استفاده کنیم آن را در ابتدای برنامه معرفی میکنیم
مثلا

Sub Macro1()
Dim i As Integer

For i = 1 To 5
MsgBox i
Next

End Sub

در این مثال متغیری را به نام i معرفی کرده ایم که به وسلیه حلقه For شماره های یک تا پنج را در آن قرار می دهیم
و اگر بخواهیم به همین صورت حروف انگلیسی را و یا یک لست نام را نمایش دهیم
می بایست برای هر کدام یک مسیج باکس جدا گانه نوشت

Sub Macro1()
MsgBox "a"
MsgBox "b"
MsgBox "c"
MsgBox "d"
MsgBox "e"
MsgBox "f"
MsgBox "g"
MsgBox "h"
MsgBox "i"
MsgBox "j"
MsgBox "k"
MsgBox "l"
MsgBox "m"
MsgBox "n"
End Sub

که اگر آن را بصورت آریایه بنویسیم به اینصورت خواهد شد

Sub Macro2()
Dim x
Dim i
x = Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n")

For i = 0 To 13
MsgBox x(i)
Next
End Sub

در آرایه بالا حروف را در متغیری به نام x قرار داده ایم که به بوسیله اندیس آن را شناسائی می کنیم یعنی این آرایه دارای مجموعه ای است با چهارده خانه که هر حروف را در یک خانه آن قرار داده ایم و شماره خانه ها از صفر شروع شده تا 13 که وقتی می گوییم خانه شماره 2 منظور حروف c و وقتی می گوییم خانه صفر یعنی حرف a و به همین ترتیب
پس وقتی می نویسیم
X(1) یعنی حرف b

استفاده از ارایه ها در برنامه های که کدنویسی بیشتری را در بر دارند مفید بودن آنها بیشتر به چشم می خورد

mo-aslani
2011/04/17, 14:06
استاد ممنون از آموزشتون
لطف کنین و ادامه بدین و مطالب بیشتری رو برای آموزش قرار بدین
باز هم ممنون

dashty
2012/03/28, 20:52
واقعا مفید بود...

[hr]
فقط این کاربرد integer/boolean/double ,..... به جه معناست؟
فرضا ماکرو با این کد که مثلا

Sub Test1()
Dim iReply As Integer

End Sub
چرا اینتگر و نه دبل و یا بولئن

~M*E*H*D*I~
2012/03/28, 21:01
این برای بهینه کردن استفاده از حافظه هست مطمئنا وقتی اعداد ما کوچیک هست استفاده از تعریف integer بهینه هست چون حافظه کمتری اشغال میکنه ولی در اعداد بزرگ دابل استفاده میشه

dashty
2012/03/28, 21:16
Do...until

with.....end with

select case

در مورد اینها هم مختصر توضیحی لطف میکنی

sh_amar
2012/03/28, 21:16
سلام به همه دوستان


در ادامه فرمايش جناب وطن پرست بايد خدمتتون بگم كه integer/boolean/double و...

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

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

Dim نام متغیر As نوع متغیر w

dashty
2012/03/28, 21:19
آیا نام متغیر دلبخواهی است یا خیر؟

~M*E*H*D*I~
2012/03/28, 21:21
البته اگر تعریف نکنید برنامه متغیر هارو variant در نظر میگیره که در هر حالتی درست عمل میکنه ولی جهت برنامه نویسی حرفه ای مناسب نیست چون با افت عملکرد برنامه مواجه میشید

dashty
2012/03/28, 21:21
آیا بجای Dim میشه از کلمات دیگری چون Static و یا Global استفاده کرد؟

~M*E*H*D*I~
2012/03/28, 21:28
متغیر ها تقسیم میشن به متغیر های محلی ، متغیر در سطح ماژول ، متغیر سراسری ،
برای اولی و دومی از dim استفاده میشه و برای آخری از global
از static برای تعریف متغیر های ایستا استفاده میشه [hr]
اضافه کنم این تقسیم بندی بر اساس طول عمر متغیر هست یعنی تا کی متغیر مقدار خودش رو نگه می داره بنا به احتیاج برنامه باید نوع متغیر رو انتخاب کنید

dashty
2012/03/28, 21:48
مفهوم تک بعدی و چند بعدی چیست؟

این هم ممنون میشم راهنمائی بفرمایین

sh_amar
2012/03/28, 21:59
يك بعدي يا تك بعدي مجموعه اي يك سطري از متغيير هاست

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


البته اگه درست گفته باشم :P

جناب وطن پرست شما توضيح اصلاحي بدهيد اگه نادرسته

ممنون ميشم

~M*E*H*D*I~
2012/03/28, 21:59
وقتی مفهوم آرایه میاد وسط مفهوم بعد هم مطرح میشه احتمالا با بردار های سطری و ستونی آشنایی داری از ترکیب بردار های سطری و ستونی ماتریس بدست میاد وقتی آرایه f(i) رو تعریف می کنیم یک ارایه یک بعدی تعریف کردیم ولی اگه بشه f
(i,j( میشه 2 بعدی و به همین ترتیب[hr]
در واقع بردار ها یک بعدی و ماتریس ها چند بعدی هستند

sh_amar
2012/03/28, 22:07
وقتی مفهوم آرایه میاد وسط مفهوم بعد هم مطرح میشه احتمالا با بردار های سطری و ستونی آشنایی داری از ترکیب بردار های سطری و ستونی ماتریس بدست میاد وقتی آرایه f(i) رو تعریف می کنیم یک ارایه یک بعدی تعریف کردیم ولی اگه بشه f
(i,j( میشه 2 بعدی و به همین ترتیب[hr]
در واقع بردار ها یک بعدی و ماتریس ها چند بعدی هستند



مثلا وقتي شما مي نويسيد
dim TP (5,3) as string

آرايه اي دو بعدي از نوع رشته اي با 5 سطر و 3 ستون تعريف كرديد يعني يك ماتريس 5 در 3

~M*E*H*D*I~
2012/03/28, 22:09
با تشکر از سرکار خانم نجفی این نکته هم من اضافه می کنم از طریق redim می تونید آرایه رو باز تعریف کنید در این صورت با حفظ داده های قبلی می تونید به ظرفیت آرایه اضافه کنید

Javid Mokhtari
2012/03/29, 13:17
Do...until

with.....end with

select case

در مورد اینها هم مختصر توضیحی لطف میکنی


Do...untilحلقه هستند ولی select case یک شرط چندگانه است.

Do..until:...
تا زمانی که شرط به یک مقدار مورد نظر نرسد،حلقه ادامه دارد ولی اگر حلقه به مقدار مورد نظر برسد،حلقه متوقف می شود.
مثال:
c=0............................................... ...مقدار دهی اولیه به متغیر c
Do until c =10..........اینجا می گوئیم که: "تا زمانی که cبرابر ده نشده است،حلقه را اجرا کن
c=c+1..................یک واحد به مقدار cاضافه می شود
loop.....................اشاره به ابتدای حلقه دارد
تا زمانی که cبه عدد ده نرسیده است حلقه تکرار می شود.


Select Case:...
از این دستور برای انجام عملیات زیاد بر رو یک متغیر استفاده می شود
مثال:
Select Case Cells(1, 1)..........سلول(1,1)را در نظر بگیر یا انتخاب کن
Case 1...............................اگر مقدار شیئ انتخابی (A1) برابر 1 باشد
MsgBox 1...........................پیغام مبنی بر اینکه مقدار برابر 1 است ، صادر کن
Case 2...............................اگر مقدار شیئ انتخابی (A1) برابر 2 باشد
MsgBox 2...........................پیغامی مبنی بر اینکه مقدار برابر 2است ، صادر کن
End Select

with.....end with:...
از لینک زیر پی گیری کنید:
http://forum.exceliran.com/thread-1248.html[hr]


با تشکر از سرکار خانم نجفی این نکته هم من اضافه می کنم از طریق redim می تونید آرایه رو باز تعریف کنید در این صورت با حفظ داده های قبلی می تونید به ظرفیت آرایه اضافه کنید



دستور Redim زمانی استفاده می شود که بخواهیم یک مقدار جدیدی برای متغیرمان تعریف کنیم.اما اگر بخواهیم مقادیر قبلی که در آرایه وجود دارد نگه داشته شود از دستور Preserve استفاده می کنیم.
Redim Preserve X(20

daghyad
2012/04/29, 18:23
اگر متغییر را تعریف نکنید حافظه را قربانی کردید