پرفروش ترين
برترين
آخرين محصولات فروشگاه
فایل الکترونیکی آموزش اکسل پیشرفته ۲۰۱۰
آموزش ایجاد فایل چندکاربره با سطح دسترسی مشخص
یوزرفرم پیشرفته -Advanced  User Form
داشبورد (مقدماتی) – Dashboards(Elementary)
ابزارهای اعتبار سنجی و اخطار دهنده
بسته آموزشی userform
مدیریت و کنترل خطا در اکسل
توابع متنی
گرافیک در اکسل
جزوه آموزشی جداول و نمودارهای پاشنه ای
فایل آموزشی نحوه تهیه فرمت عددی دلخواه یا custom number format cell
آموزش ایجاد فایل چندکاربره با سطح دسترسی مشخص
صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 , از مجموع 17

موضوع: چگونه در vba به كنترل جاري اشاره كنم

  1. #1


    آخرین بازدید
    یک هفته پیش
    تاریخ عضویت
    September_2011
    محل سکونت
    استان فارس - فراشبند
    نوشته ها
    151
    امتیاز
    36
    سپاس
    55
    سپاس شده
    31 در 22 پست

    چگونه در vba به كنترل جاري اشاره كنم

    حضور دوستان عزيز سلام عرض مي كنم

    سوال اينست : چگونه در كد نويسي رويداد كليك يك كنترل ، مثلاً label ، ميتوان به كنترل جاري اشاره كرد مثل عبارت me كه به userform جاري اشاره مي كند ايا عبارتي هم وجود دارد كه به كنترل جاري اشاره كند
    جهت اطلاع دوستان ، پروژه هم يه چيزي مثل اينست كه تعداد زيادي (براي حدود 100 ليبل) ميخواهم كد بنويسم كه با كليك روي هركدام ، caption آن كنترل به ساعت جاري سيستم تبديل شود
    از اين رو اگر براي هر كدام بخواهم نام همان ليبل را در رويداد مربوطه بنويسم فكر نميكنم زياد جالب باشد
    اخطار: این یک موضوع قدیمی است
    به دلیل قدیمی بودن موضوع، ممکن است برخی فایل های ضمیمه به درستی کار نکنند. لطفا در صورت عدم ضرورت، از بالا آوردن موضوعات قدیمی خودداری نمایید.

  2.  

  3. #2


    آخرین بازدید
    20 _ 10 _ 2015
    تاریخ عضویت
    December_2011
    نوشته ها
    275
    امتیاز
    239
    سپاس
    216
    سپاس شده
    219 در 73 پست

    RE: چگونه در vba به كنترل جاري اشاره كنم

    اگه اشتباه نکنم با همون me میشه کافیه بعد از me کنترل مربوطه بیاد مثلا
    [align=left]
    کد PHP:
    me.textbox1 
    [/align]

  4. #3


    آخرین بازدید
    یک هفته پیش
    تاریخ عضویت
    September_2011
    محل سکونت
    استان فارس - فراشبند
    نوشته ها
    151
    امتیاز
    36
    سپاس
    55
    سپاس شده
    31 در 22 پست

    RE: چگونه در vba به كنترل جاري اشاره كنم

    نقل قول نوشته اصلی توسط mahasa shayesteh
    اگه اشتباه نکنم با همون me میشه کافیه بعد از me کنترل مربوطه بیاد مثلا
    [align=left]
    کد PHP:
    me.textbox1 
    [/align]
    me هميشه به userform جاري اشاره ميكند

  5. #4


    آخرین بازدید
    31 _ 03 _ 2017
    تاریخ عضویت
    May_2010
    محل سکونت
    بلژیک
    نوشته ها
    175
    امتیاز
    92
    سپاس
    0
    سپاس شده
    103 در 45 پست

    RE: چگونه در vba به كنترل جاري اشاره كنم

    سلام دوست عزیز.

    برای اینکه به کنترل جاری اشاره کنید دستوری به این نام وجود دارد: Me.ActiveControl

    برای اینکه اندیس تب این کنترل رو متوجه شوید از این دستور: Me.ActiveControl.TabIndex

    اما اگر می خواهید caption یک کنترل جاری را مورد بازیابی قرار دهید. دچار مشکلی می شوید به نام دگرریختی یا polymorphism . اصولا چون Label کلاس زیر مجموعه Control هست و caption متعلق به Label هست و نه Control شما نمی توانید آن را مستقیم مورد بازیابی قرار دهید. به عبارتی دیگر همه کنترل ها caption ندارند. برای اینکار باید شما. ریخت و قیافه control خود را به اصطلاح عوض کنید. برای این کار از یک شی کمکی استفاده می کنیم به این صورت.

    Dim AltLbl As Label
    Set AltLbl = Me.ActiveControl
    MsgBox AltLbl.Caption

    پیروز و موفق باشید.

  6. #5
    mokaram آنلاین نیست.
    مدير تالار اکسل و بانک اطلاعاتی


    آخرین بازدید
    4 روز پیش
    تاریخ عضویت
    February_2011
    محل سکونت
    ســــاوه
    نوشته ها
    1,560
    امتیاز
    5597
    سپاس
    6,381
    سپاس شده
    4,393 در 1,235 پست

    mokaram به Yahoo ارسال پیام فرستادن پیام با Skype به mokaram

    RE: چگونه در vba به كنترل جاري اشاره كنم

    مثل همیشه جامع و سلیس و کاربردی
    ممنون استاد داوری

  7. #6


    آخرین بازدید
    20 _ 10 _ 2015
    تاریخ عضویت
    December_2011
    نوشته ها
    275
    امتیاز
    239
    سپاس
    216
    سپاس شده
    219 در 73 پست

    RE: چگونه در vba به كنترل جاري اشاره كنم

    نقل قول نوشته اصلی توسط m_d6712
    سلام دوست عزیز.

    برای اینکه به کنترل جاری اشاره کنید دستوری به این نام وجود دارد: Me.ActiveControl

    برای اینکه اندیس تب این کنترل رو متوجه شوید از این دستور: Me.ActiveControl.TabIndex

    اما اگر می خواهید caption یک کنترل جاری را مورد بازیابی قرار دهید. دچار مشکلی می شوید به نام دگرریختی یا polymorphism . اصولا چون Label کلاس زیر مجموعه Control هست و caption متعلق به Label هست و نه Control شما نمی توانید آن را مستقیم مورد بازیابی قرار دهید. به عبارتی دیگر همه کنترل ها caption ندارند. برای اینکار باید شما. ریخت و قیافه control خود را به اصطلاح عوض کنید. برای این کار از یک شی کمکی استفاده می کنیم به این صورت.

    Dim AltLbl As Label
    Set AltLbl = Me.ActiveControl
    MsgBox AltLbl.Caption

    پیروز و موفق باشید.
    حالا مثلا از me استفاده کنیم چه فرقی میکنه استفاده از خود کنترل چه اشکالی داره؟


  8. #7


    آخرین بازدید
    31 _ 03 _ 2017
    تاریخ عضویت
    May_2010
    محل سکونت
    بلژیک
    نوشته ها
    175
    امتیاز
    92
    سپاس
    0
    سپاس شده
    103 در 45 پست

    RE: چگونه در vba به كنترل جاري اشاره كنم

    نقل قول نوشته اصلی توسط mahasa shayesteh
    نقل قول نوشته اصلی توسط m_d6712
    سلام دوست عزیز.

    برای اینکه به کنترل جاری اشاره کنید دستوری به این نام وجود دارد: Me.ActiveControl

    برای اینکه اندیس تب این کنترل رو متوجه شوید از این دستور: Me.ActiveControl.TabIndex

    اما اگر می خواهید caption یک کنترل جاری را مورد بازیابی قرار دهید. دچار مشکلی می شوید به نام دگرریختی یا polymorphism . اصولا چون Label کلاس زیر مجموعه Control هست و caption متعلق به Label هست و نه Control شما نمی توانید آن را مستقیم مورد بازیابی قرار دهید. به عبارتی دیگر همه کنترل ها caption ندارند. برای اینکار باید شما. ریخت و قیافه control خود را به اصطلاح عوض کنید. برای این کار از یک شی کمکی استفاده می کنیم به این صورت.

    Dim AltLbl As Label
    Set AltLbl = Me.ActiveControl
    MsgBox AltLbl.Caption

    پیروز و موفق باشید.
    حالا مثلا از me استفاده کنیم چه فرقی میکنه استفاده از خود کنترل چه اشکالی داره؟

    خیلی ساده بگم. Me.activeControl به کنترل جاری اشاره می کند. ولی مفسر و ادیتور هنوز نمی دونند که این کنترل یک Label هست. به همین دلیل ما با فرمان
    Dim AltLbl As Label
    Set AltLbl = Me.ActiveControl
    به مفسر و ادیتور می گوییم که این کنترل یک label هست. وقتی آنها از هویت کنترل با اطلاع شوند ما می توانیم از خاصییت caption اون کنترل با استفاده کنیم. به این نکته توجه کنید که خیلی از کنترل ها اصلا caption ندارند.






  9. #8


    آخرین بازدید
    20 _ 10 _ 2015
    تاریخ عضویت
    December_2011
    نوشته ها
    275
    امتیاز
    239
    سپاس
    216
    سپاس شده
    219 در 73 پست

    RE: چگونه در vba به كنترل جاري اشاره كنم

    ولی تو قسمت properties کنترل ها کپشن دارن چه لزومی داره به این شیوه از کپشن استفاده بشه؟

  10. #9


    آخرین بازدید
    31 _ 03 _ 2017
    تاریخ عضویت
    May_2010
    محل سکونت
    بلژیک
    نوشته ها
    175
    امتیاز
    92
    سپاس
    0
    سپاس شده
    103 در 45 پست

    RE: چگونه در vba به كنترل جاري اشاره كنم

    نقل قول نوشته اصلی توسط mahasa shayesteh
    ولی تو قسمت properties کنترل ها کپشن دارن چه لزومی داره به این شیوه از کپشن استفاده بشه؟
    ببینید مثلا combo box مشخصه ای به نام caption ندارد. اصولا در شی گرایی همه کلاس های فرزند همه ی مشخصات کلاس والد را (که کلاس control باشد) به ارث می برند. به این دلیل اگر caption جزوی از مشخصات کلاس والد باشد باید همه فرزندان هم داشته باشند. در شی گرایی سعی بر این است که حداکثر بهره وری ایجاد بشه. پس لزومی نداره که برای control مشخصه ای به نام caption تعریف بشه.

    حال مفسر می داند که یکی از فرزندان control انتخاب شده. اما نمی داند کدام یک.
    در صورتی که از مشخصات مشترک این فرزندان می خواستید استفاده کنید. نیازی به دگر ریختی نبود. ولی حالا که از یک مشخصه خاص دارید استفاده می کنید. به دگر ریختی نیاز دارید.

    F2 را فشار دهید. Control را جستجو کنید. از منوی نتایج active control userform را انتخاب کنید. تمام مشخصات این شی برای شما آورده می شود. و در زیر آن
    Property ActiveControl As Control
    read-only
    Member of MSForms.UserForm
    را می بینید. به این معنی که active control یک control هست.
    در لیست مشخصات آن هم caption وجود ندارد. اما back color وجود دارد.

    اگر می خواستید که از back color استفاده کنید نیازی به تغییر ریخت شی وجود نداشت.
    اما وقتی می خواهید از caption استفاده کنید. باید تغییر ریخت بدهید.

    نکته: اگر بر روی label کلیک کرده باشید، ActiveControl قطعا Label خواهد بود. اما تا زمانی که به مفسر نگویید که این label هست هنوز نگاه کلی به آن دارد و فقط از ویژگی control آن می توانید استفاده کنید.

    مثلا یک بچه رو در نظر بگیر. به لقمه میدی به دستش، اما اون نمی دونه باید چه کار کنه باهاش تا زمانی که بهش بگین این لقمه خوردنی هست. اما دونستن و ندوستن اون بچه خوردنی بودن اون لقمه رو زیر سوال نمی برد.


    امیدوارم واضح گفته باشم.

    دوباره Labe

  11. #10


    آخرین بازدید
    20 _ 10 _ 2015
    تاریخ عضویت
    December_2011
    نوشته ها
    275
    امتیاز
    239
    سپاس
    216
    سپاس شده
    219 در 73 پست

    RE: چگونه در vba به كنترل جاري اشاره كنم

    مرسی از توضیحات میشه لطفا برای همین کمبوباکس یه نمونه بذارید ببینم چه اتفاقی میفته ببخشیدا زیاد سوال میپرسم


صفحه 1 از 2 12 آخرینآخرین

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

بازدید کنندگان با جستجو های زیر این صفحه را پیدا کرده اند

انجمن اكسل ايران , اكسل , اكسس , سوال و جواب اكسل , سوال اكسس , انجمن اكسل ايران , توابع اكسل, آموزش اكسل, آموزش اكسس, VBA, ويژوال بيسيك

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  
  • BB code ها فعال هستند
  • شکلک ها فعال هستند
  • کد [IMG] فعال است
  • کد [VIDEO] فعال است
  • کد HTML غیر فعال است