PDA

View Full Version : سوال: ایجاد متغیر بدون تعریف نام به صورت ثابت.



hemmattby
شنبه 01 تیر 1392, 20:48 عصر
سلام.
به کد زیر توجه کنید:

If a <> "" Then
Dim b As String
b = a
End If

خوب در این کد، وقتی شرط برقرار بشه، متغیر b، برابر a میشه.
من می خوام هر بار، متغیر جدیدی تعریف بشه و مقدار a، توی
اون ریخته بشه... نه اینکه همیشه b برابر a بشه.
مثلا بار اول، a1 ایجاد بشه. بار دوم، a2 و همینطور الی آخر. آیا راهی هست؟

m.4.r.m
شنبه 01 تیر 1392, 22:36 عصر
باید آرایه تعریف کنی

hemmattby
یک شنبه 02 تیر 1392, 00:51 صبح
باید آرایه تعریف کنیبله. به نظر میرسه استفاده از آرایه، معقول تر باشه.
ولی لطفا توجه کنید که اصلا منظور من از این تاپیک، یه چیز دیگه بود.
من، متغیرها و عناصر نامحدود می خوام.
برای تعریف کردن آرایه ها هم مثلا باید بنویسیم:
Dim a(10) As String
که با این کد، ما فقط 11 تا آرایه داریم.
مشکل من اینجاست که تعداد متغیرها یا عناصر مورد نیاز، بستگی
به عملکرد کاربر داره. معلوم نیست چند تا مورد نیاز هست.
ببینید فرض کنید من یه متغیر دارم به اسم a، این متغیر، براساس عملکرد کاربر،
می تونه هرلحظه، مقداری داشته باشه که در لحظه ی بعدی تغییر کنه.
حالا من می خوام مقادیری که این متغیر در لحظات مختلف می گیره، یه جا ثبت بشه.
مثلا به تعداد مقادیری که این متغیر می گیره (که عدد ثابتی نیست و هر چندتا می تونه باشه)،
متغیر یا زیرمجموعه برای آرایه درست بشه. در واقع هر وقت متغیر a، مقدار جدیدی گرفت، یه
متغیر جدید ساخته بشه و مقدار اون لحظه ی متغیر a رو بگیره.

لطفا کمک کنید. خیلی مهمه.

setroyd
یک شنبه 02 تیر 1392, 01:21 صبح
نه میتونید مقدار ارایه را مشخص نکنید و با redime مشخص کنید


Dim a() As Long
Private Sub Form_Load()
ReDim a(1)
a(0) = 12
a(1) = 34
MsgBox a(1)
End Sub


شما به این صورت میتونی بنا به خواسته ی کاربر مقدار تعیین کنید .

hemmattby
یک شنبه 02 تیر 1392, 01:41 صبح
نه میتونید مقدار ارایه را مشخص نکنید و با redime مشخص کنید
خیلی ممنون. مشکلم حل شد. البته با همون خط کد ReDim a(1)، باز هم تعداد، محدود
می شود. ولی خوبی این روش نسبت به روش هایی که من بلد بودم؛ اینه که می شه
برای تعداد، از متغیر استفاده کرد. یعنی مثلا نوشت: (ReDim b(c
که توی روش های من، نمی شد برای تعداد از متغیر استفاده کرد و برنامه ارور می داد.
که همین موضوع، مشکل من رو حل کرد.
ازتون ممنونم برای کمکی که کردین.

IamOverlord
یک شنبه 02 تیر 1392, 05:23 صبح
ضمنا اگه به جای ReDim از ReDim Preserve استفاده کنید، مقادیر قبلی خونه های آرایه تون حفظ می شه...

vbhamed
یک شنبه 02 تیر 1392, 07:50 صبح
خیلی ممنون. مشکلم حل شد. البته با همون خط کد ReDim a(1)، باز هم تعداد، محدود
می شود. ولی خوبی این روش نسبت به روش هایی که من بلد بودم؛ اینه که می شه
برای تعداد، از متغیر استفاده کرد. یعنی مثلا نوشت: (ReDim b(c
که توی روش های من، نمی شد برای تعداد از متغیر استفاده کرد و برنامه ارور می داد.
که همین موضوع، مشکل من رو حل کرد.
ازتون ممنونم برای کمکی که کردین.

سلام
دستور Redim رو مي‌تونيد چند بار استفاده كنيد بنابراين تعداد محدود نداريد چون اگر نياز بود ميشه ابعاد آرايه رو چندين بار تغيير داد فقط همونطوري كه ImOverload عزيز گفتن از Redim Preserve استفاده كنيد تا مقادير قبلي از بين نره