ورود

View Full Version : دسترسي به مقدار متغير بصورت غير مستقيم



alinagoo
پنج شنبه 27 خرداد 1389, 17:10 عصر
دوستان سلام
مشكلي دارم كه اميدوارم عزيزي بتونه كمكم كنه
خيلي مشخصه كه اگه بخواهيم به متغيري دسترسي پيدا كنيم مثلا بخواهيم مقدار آن را عوض كنيم بايد به اينصورت عمل كنيم:

Val=10

اما فرض كنيد به دليلي در زمان برنامه نويسي اينكه كدام متغير بايد مقدار دهي شود مشخص نيست و اين متغير زمان اجراي برنامه مشخص ميشود
مثلا اسم متغير در يك رشته قرار داده ميشود بنام:VarName
حالا چطور ميتونيم متغير رو مقدار دهي كنيم؟
چه جوري به سيستم بفهمونيم اون متغيري رو مقدار دهي كن كه اسمش داخل VarName قرار داره؟
ممنونم از اينكه وقتتونو به من دادين

aryasoft2872
پنج شنبه 27 خرداد 1389, 19:19 عصر
با select case می تونید اینکار رو انجام بدید یعنی مثلا بگید اگه varname برابر با 3 بود اونوقت متغییر intlen رو برابر با x کن

alinagoo
جمعه 28 خرداد 1389, 00:11 صبح
سلام دوست گرامي
از جوابتون ممنونم
ولي دوست داشتم يه راح حل كلاسيك و جمع و جور بهم معرفي بشه آخه فرض كنيد من برا يه گزارش ساختن 50 تا فيلد دارم پس حداقل بايد 50 تا كيس بنويسم!
اين تازه يه گزارشه.تا حالا 4 تا گزارش برا پروژم تعريف شده يعني حدود دويست خط كيس بايد بنويسم!
به نظرتون جالبه؟!
ولي اگه يه كلكي يه ترفندي بود كه با محتواي اون رشته اي كه اسم متغير رو داره ميشد كار كنم توي يه حلقه جمع و جور برنامه رو تموم ميكردم!
به هر صورت ممنونم
در ضمن توي يه فروم خارجي به من پيشنهاد شد ار Collection استفاده كنم ولي من نميدونم چيه و چه چه جوري ميشه باهاش دسترسي غير مستقيم ايجاد كرد
اون وبلاگ بسيجي رو هم ديدم.
مرسي
خدا نگهدار

کیوان معینی
جمعه 28 خرداد 1389, 03:53 صبح
ولي دوست داشتم يه راح حل كلاسيك و جمع و جور بهم معرفي بشه
...
به نظرتون جالبه؟! ولي اگه يه كلكي يه ترفندي بود ...



بالاخره کلاسیک یا کلک ؟!


شما باید آرایه متغیر استفاده کنین



Dim a(50) as Integer

for i=1 to 50
if i=? then a(i)=??
next

alinagoo
جمعه 28 خرداد 1389, 09:57 صبح
خب آخه مشكل اينه كه ديتا تايپ همه متغيرها يكي نيست!

alinagoo
جمعه 28 خرداد 1389, 10:21 صبح
جوابشو پيدا كردم
يا بايد از VB Collection ها استفاده كنيم
يا از TempVars كه البته فكر كنم فقط تويه VBA كار كنه
ممنون
موفق باشيد