صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 , از مجموع 17

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

  1. #1


    آخرین بازدید
    2022/08/30
    تاریخ عضویت
    September 2011
    محل سکونت
    استان فارس - فراشبند
    نوشته ها
    159
    امتیاز
    38
    سپاس
    55
    سپاس شده
    33 در 24 پست
    سطح اکسل
    45.00 %

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

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

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

  2.  

  3. #2


    آخرین بازدید
    2015/10/20
    تاریخ عضویت
    December 2011
    نوشته ها
    272
    امتیاز
    251
    سپاس
    216
    سپاس شده
    231 در 76 پست
    تعیین سطح نشده است

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

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

  4. #3


    آخرین بازدید
    2022/08/30
    تاریخ عضویت
    September 2011
    محل سکونت
    استان فارس - فراشبند
    نوشته ها
    159
    امتیاز
    38
    سپاس
    55
    سپاس شده
    33 در 24 پست
    سطح اکسل
    45.00 %

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

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

  5. #4


    آخرین بازدید
    2022/06/28
    تاریخ عضویت
    May 2010
    محل سکونت
    بلژیک
    نوشته ها
    174
    امتیاز
    108
    سپاس
    0
    سپاس شده
    119 در 53 پست
    تعیین سطح نشده است

    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 آنلاین نیست.
    مدير تالار اکسل و بانک اطلاعاتی


    محصولات کاربر

    ويدئوي ايجاد سطح دسترسي
    آخرین بازدید
    2023/04/20
    تاریخ عضویت
    February 2011
    محل سکونت
    ســــاوه
    نوشته ها
    1,805
    امتیاز
    6409
    سپاس
    8,100
    سپاس شده
    5,163 در 1,502 پست
    سطح اکسل
    74.00 %

    mokaram به Yahoo ارسال پیام

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

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

  7. #6


    آخرین بازدید
    2015/10/20
    تاریخ عضویت
    December 2011
    نوشته ها
    272
    امتیاز
    251
    سپاس
    216
    سپاس شده
    231 در 76 پست
    تعیین سطح نشده است

    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


    آخرین بازدید
    2022/06/28
    تاریخ عضویت
    May 2010
    محل سکونت
    بلژیک
    نوشته ها
    174
    امتیاز
    108
    سپاس
    0
    سپاس شده
    119 در 53 پست
    تعیین سطح نشده است

    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


    آخرین بازدید
    2015/10/20
    تاریخ عضویت
    December 2011
    نوشته ها
    272
    امتیاز
    251
    سپاس
    216
    سپاس شده
    231 در 76 پست
    تعیین سطح نشده است

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

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

  10. #9


    آخرین بازدید
    2022/06/28
    تاریخ عضویت
    May 2010
    محل سکونت
    بلژیک
    نوشته ها
    174
    امتیاز
    108
    سپاس
    0
    سپاس شده
    119 در 53 پست
    تعیین سطح نشده است

    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


    آخرین بازدید
    2015/10/20
    تاریخ عضویت
    December 2011
    نوشته ها
    272
    امتیاز
    251
    سپاس
    216
    سپاس شده
    231 در 76 پست
    تعیین سطح نشده است

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

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


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

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

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

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

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

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

علاقه مندی ها (Bookmarks)

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

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