نمایش نتایج: از شماره 1 تا 8 , از مجموع 8

موضوع: یک تکنیک کاربردی جهت کار با لیست*ها

  1. #1


    آخرین بازدید
    2024/02/06
    تاریخ عضویت
    January 2012
    محل سکونت
    کاشان
    نوشته ها
    170
    امتیاز
    602
    سپاس
    7
    سپاس شده
    372 در 125 پست
    تعیین سطح نشده است

    smartman به  ICQ ارسال پیام smartman به MSN ارسال پیام smartman به Yahoo ارسال پیام

    یک تکنیک کاربردی جهت کار با لیست*ها

    با سلام خدمت همه کاربران

    های لایت کردن سطر (ستون) جاری یک لیست در قالب یک تکنیک کاربردی در فایل ضمیمه، نشان داده شده است.

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام:  2014-04-24 08-17-05 ق-ظ.png
مشاهده: 36
حجم:  27.5 کیلو بایت

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام:  2014-04-24 08-23-54 ق-ظ.png
مشاهده: 27
حجم:  25.0 کیلو بایت


    کد PHP:
    Sub Auto_Open()
    On Error Resume Next

    Dim CheckRegistry 
    As String
    CheckRegistry 
    GetSetting(appname:="SigmaPlot"section:="Excel"_
            key
    :="Addin", Default:="0")
            
            
    If 
    Dir(ThisWorkbook.Path "\Sigmaplot.xla") = "" Then
        SPRemoveMenu
        ResetRegistry
    End 
    If

    End Sub
    Sub SPRemoveMenu
    ()
    On Error Resume Next

    Dim spButtonCheck 
    As CommandBarControl
    Dim spCommandbar 
    As CommandBarControl

    Set spCommandbar 
    CommandBars("Worksheet Menu Bar").Controls("Insert")
    Set spCommandbar CommandBars(1).Controls(4)       'add for foreign OS

    For Each spButtonCheck In spCommandbar.Controls
       If spButtonCheck.Caption = "SigmaPlot Graph" Then
            spButtonCheck.Delete
            Application.CommandBars("Standard").Controls(20).Delete
            Application.CommandBars(3).Controls(20).Delete     '
    add for foreign OS
            
    Exit Sub
        End 
    If
    Next

    End Sub
    Sub ResetRegistry
    ()

    Dim CheckRegistry As String

    ' Check the registry for an entry
    CheckRegistry = GetSetting(appname:="SigmaPlot", section:="Excel", _
                           key:="Addin", Default:="0")

    If CheckRegistry = 1 Then
        '
    Set the registry setting for sigmaplot addin
        SaveSetting appname
    :="SigmaPlot"section:="Excel"_
                key
    :="Addin"setting:=0
    End 
    If

    End Sub 
    اخطار: این یک موضوع قدیمی است
    به دلیل قدیمی بودن موضوع، ممکن است برخی فایل های ضمیمه به درستی کار نکنند. لطفا در صورت عدم ضرورت، از بالا آوردن موضوعات قدیمی خودداری نمایید.
    ویرایش توسط ~M*E*H*D*I~ : 2014/04/24 در ساعت 09:25

  2. سپاس ها (2)


  3.  

  4. #2


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

    Re: یک تکنیک کاربردی جهت کار با لیست*ها

    یکی از دوستان سوالی مطرح کرد درباره این تاپیک که فکر کردم خوب باشه جوابشو اینجا هم بدهم.

    نقل قول نوشته اصلی توسط m_d6712
    نقل قول نوشته اصلی توسط x
    سلام آقای داوری.
    میشه درباره کد های زیر بیشتر توضیح بدین.هنوز عملکردشون واسم یکم گنگه...:

    کد PHP:
     with
    set
    is Nothing
    xlColorIndexAutomatic
    Intersect 
    .............با تشکر.............
    سلام دوست عزیز.


    1- with عملکرد ساده ای داره. فقط برای کوتاه کردن کد نویسی ازش استفاده می کنن.

    مثلا:
    به جای

    کد PHP:
      Range("B2:P16").Font.Bold False
        Range
    ("B2:P16").Interior.ColorIndex xlColorIndexAutomatic
     Range
    ("B2:P16").Font.color blue 
    برای اینکه از تکرار جلوگیری کنیم میشه بنویسیم:

    کد PHP:
     With Range("B2:P16")
    .
    Font.Bold False
    .Interior.ColorIndex xlColorIndexAutomatic
    .Font.color blue
    End With 

    2- set در زبان ویژوال بیسیک برای نسبت دادن یک شی به شی دیگر استفاده میشه:
    اولا باید فرق شی و متغیر رو بدونی.
    مثلا
    کد PHP:
     dim a as integer 
    خوب این یک متغیر است و به راحتی برای نسبت دادن از یک مساوی استفاده میشه کرد. مثلا
    کد PHP:
     atarget.row 
    اما range یک شی هست. همچنین workbook, worksheet, و row و column. اینها شی هستند که برخی باز شامل شی هایی هم میشوند. مثلا range ممکنه شامل چند row بشه و row ممکنه شامل چند cell بشه. در حالی که range خودش شی ای از شی های worksheet هایی هست که خود این worksheet ها فرزند یک workbook هستش.

    حالا این بحث خیلی مفصلی هست. اما به هر صورت برای نسبت دادن یک شی به یک شی جدید از عبارت set استفاده می کنیم.

    مثلا
    dim a as range خوب این یک شی از نوع range هست
    حالا می گیم
    کد PHP:
    range("A1:A10"
    غلطه
    باید بنویسی:
    کد PHP:
     set a range("A1:A10"
    اگر اینطور عمل کنی. a و
    کد HTML:
      range("A1:A10")
    معنی واحدی میدن.
    یعنی a.intorior.backcolor رنگ پشت زمینه اون منطقه A1 نا A10 رو معنی میده
    کد PHP:
     a.intorior.backcolorblack 

    با این شی ها کارای زیادی میشه کرد. یه مطالعه بکنشون.
    برای پیدا کردن شی مادر یا شی کافیه بنویسی:
    کد PHP:
    dim b as range
    set b 
    a.Parent 
    به این صورت.




    3- is nothing در زبان VB معنی NULL رو میده. یعنی یک شی ای هنوز به شی خاصی نسبت داده نشده است. ببین یک متغیر وقتی تعریف میشه مقدار دهی اولیه میشه. اگر هم نشه به هرحال یک مقدار داخل خودش داره. اما یک شی وقتی تعریف میشه NULL هست. یعنی به هیچ چیزی اشاره نمی کنه. مگر شما به یک شی نسبت بدهیش:

    مثلا:

    dim a as range
    تا الان a یک شی NULL هست.

    باید یکی از دو روش زیر رو انتخاب کنی. بگی a یک شی جدید است یا a یک شی ای هست که الان وجود داره.

    set a = new range به مفهوم اینه که a یک شی جدید است.
    کد HTML:
    set a = range("A1:A10")
    به مفهوم اینه که a همون شی ای است که الان وجود داره و به خونه های A1 تا A10 اشاره داره.


    پس وقتی میگیم if a is nothing then یعنی اگر هنوز a وجود نداره یعنی هیچ جایی واسه a تعریف نشده. این کارو بکن.

    4- xlColorIndexAutomatic نماینده کد رنگ اتوماتیک هست. اینو بجای یک عدد که نمایند رنگ هست میتونی استفاده کنی. البته اگر حافظت خوبه می تونی عدد رو هم حفظ کنی :دی

    5- Intersect دو تا range مختلف رو به عنوان ورودی می گیره و فضای مشترک بین این دو رو برای ما مشخص می کنه. می تونی از این کد برای اینکه بدونی دو range با هم نقطه مشترک دارن یا نه استفاده کنی.



    موفق و موید باشی.
    [hr]





    و اما در مورد خود تاپیک



    نقل قول نوشته اصلی توسط smartman
    با سلام خدمت همه کاربران

    های لایت کردن سطر (ستون) جاری یک لیست در قالب یک تکنیک کاربردی در فایل ضمیمه، نشان داده شده است.

    تکنیک کاربردی1066
    سلام.
    من فایل شمارو دیدم. خیلی خوب بود و زیبا.

    فقط چند نکته که فکر کردم به بهبود فایل شما کمک می کنه.

    همه چیز خوب بنظر میرسه غیر از کند بودن فایل شما.
    ابتدا به نظرم کند رسید. خوب تصمیم گرفتم عوض 550 سطر از عدد 30000 استفاده کنم.
    چه اتفاقی می افتد؟
    فایل بسیار کند میشود.

    1- در ابتدا شما از تابع intersect استفاده کردید که اصلا نیازی نیست. در واقع intersect برای بدست آوردن range ای است که بین دو range ورودی مشترک است. اما هدف شما این نیست. من فکر میکنم که هدفتون این بوده که متوجه بشوید که آیا target درون range مورد نظر هست یا نه؟
    خوب این کار رو با استفاده از target.row و target.column و row و column های اون range تون با 4 عملیات میشه محاسبه کرد. نیازه نیست اگر 30000 هزار ردیف داریم نقاط مشترک همه 30000 تارو بدست بیاوریم که خودش یک فرآیند زمان براست.

    کد PHP:
     2-  Range("A2:H550").Font.Bold False
        Range
    ("A2:H550").Interior.ColorIndex xlColorIndexAutomatic 
    این دو عبارت باز خیلی زیاد محاسبات لازم داره. کافیه سطر و سلولی که تغییر میدهید رو با 2 عدد همیشه در نظر بگیرید. مثلا شماره سطر و ستون مورد نظر رو در خانه هایXY و XX ذخیره کنید. در مرحله بعد فقط نیاز است اون سطر و خونه مورد نظر رو به حالت اول برگردونید.


    این دو نکته را در فایل پیاده سازی کنید. متوجه بهبود خواهید شد.

    موفق باشید.
    ویرایش توسط ~M*E*H*D*I~ : 2014/04/24 در ساعت 09:19

  5. سپاس ها (2)


  6. #3


    آخرین بازدید
    2024/02/06
    تاریخ عضویت
    January 2012
    محل سکونت
    کاشان
    نوشته ها
    170
    امتیاز
    602
    سپاس
    7
    سپاس شده
    372 در 125 پست
    تعیین سطح نشده است

    smartman به  ICQ ارسال پیام smartman به MSN ارسال پیام smartman به Yahoo ارسال پیام

    RE: یک تکنیک کاربردی جهت کار با لیست‌ها

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

    یاد یک ضرب المثل افتادم که میگه «املای نانوشته، غلط نداره» خلاصه اینکه با توجه به راهنمایی های شما نتیجتا فایل نهایی به این شکل دراومد.

    در ضمن هر دو فایل با کاربرگهای LTR عملکرد به مراتب بهتری دارند که دلیلشو نمیدونم.


  7. سپاس ها (1)


  8. #4


    آخرین بازدید
    2023/05/03
    تاریخ عضویت
    January 2012
    محل سکونت
    استان اردبیل / شهرستان پارس آباد (مغان)
    نوشته ها
    1,213
    امتیاز
    2633
    سپاس
    1,399
    سپاس شده
    2,089 در 665 پست
    سطح اکسل
    73.00 %

    Javid Mokhtari به Yahoo ارسال پیام

    Re: یک تکنیک کاربردی جهت کار با لیست*ها

    با سلام و تشکر از دوست خوبمون.
    البته هنوز اشکالات ریز و درشتی هم داره که این هم طبیعی هستش.
    یکی از ایرادهاش اینه که وقتی فایل باز میشه ،اگه سطری به غیر از سطری که در هنگام باز شدن فایل فعال است رو انتخاب کنی،سطر قبلی در حالت انتخاب میمونه.
    که با یک کد ساده در رویدادهای مختلف میشه حلش کرد.مثل:
    کد PHP:
    Private Sub Workbook_Open()
    Range("a2:h3000").Interior.ColorIndex xlColorIndexNone
    End Sub 
    ویرایش توسط ~M*E*H*D*I~ : 2014/04/24 در ساعت 09:21

  9. سپاس ها (2)


  10. #5


    آخرین بازدید
    2022/12/05
    تاریخ عضویت
    October 2011
    محل سکونت
    مشهد
    نوشته ها
    4,374
    امتیاز
    12614
    سپاس
    4,596
    سپاس شده
    11,990 در 3,203 پست
    سطح اکسل
    70.00 %

    RE: یک تکنیک کاربردی جهت کار با لیست‌ها

    سلام
    راستش من توضیحات دوستان رو نخوندم و فقط فایل رو دیدم دستمون 2 تا شیت داشت یکی فقط سطر رو هایلایت میکرد یکیم که مثل جدول ضرب بود سطر و ستون رو هایلایت میکرد راستش من این کد رو برداشتم یکم ذسکاری کردم واسه هایلایت کردن ردیف اینطوری اصلا نیاز به انتخاب range نیست سرعتشم بالاست حالا نمیدونم دوستمون چرا به اون صورت عمل کرده به هر حال این هم روشیه
    فايل هاي پيوست شده فايل هاي پيوست شده

  11. سپاس ها (1)


  12. #6


    آخرین بازدید
    2024/01/21
    تاریخ عضویت
    November 2013
    محل سکونت
    تهران
    نوشته ها
    1,519
    امتیاز
    6121
    سپاس
    2,884
    سپاس شده
    4,889 در 1,381 پست
    سطح اکسل
    71.67 %

    داشتم در اينترنت دنبال مطلبي راجع به SelectionChange مي گشتم، به کدي برخوردم جهت BOLD کردن متن سطر فعال، ديدم جالب است گفتم در سايت بهش اشاره کنم، قبلش گفتم بگردم ببينم قبلا" در سايت چيزي راجع به آن آمده يا نه که به اين موضوع برخوردم، واقعا" دوستان قديمي سايت زحمت کشيده اند. حيف است که اين مطالب با کهنه شدن وسط مطالب ديگر گم مي شود، کاش مي شد کاري کرد که به صورتي هميشه در صدر باشند، البته ظاهرا" سايت اين امکان را داراست ولي ما کمتر از آن استفاده مي کنيم. اين مطلب را نوشتم تا شايد به بهانه نوشته من دوباره اين مطلب در صدر قرار گرفته و مورد توجه قرار گيرد.
    اين هم کدي که گفتم (بد نيست پايان اين موضوع اضافه شود):
    کد PHP:
    Dim x As Long
    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
        
    ActiveCell.EntireRow.Font.Bold True
        
    If = Empty Then
            x 
    ActiveCell.Row
        
    ElseIf Not x ActiveCell.Row Then
           Rows
    (x).EntireRow.Font.Bold False
        End 
    If
        
    ActiveCell.Row
    End Sub 
    منبع: http://support.microsoft.com/kb/213193


  13. #7


    آخرین بازدید
    2024/02/18
    تاریخ عضویت
    February 2014
    محل سکونت
    تهران
    نوشته ها
    523
    امتیاز
    1130
    سپاس
    2,816
    سپاس شده
    1,050 در 348 پست
    سطح اکسل
    51.00 %

    علی فاطمی به Yahoo ارسال پیام
    نقل قول نوشته اصلی توسط ~M*E*H*D*I~ نمایش پست ها
    سلام
    راستش من توضیحات دوستان رو نخوندم و فقط فایل رو دیدم دستمون 2 تا شیت داشت یکی فقط سطر رو هایلایت میکرد یکیم که مثل جدول ضرب بود سطر و ستون رو هایلایت میکرد راستش من این کد رو برداشتم یکم ذسکاری کردم واسه هایلایت کردن ردیف اینطوری اصلا نیاز به انتخاب range نیست سرعتشم بالاست حالا نمیدونم دوستمون چرا به اون صورت عمل کرده به هر حال این هم روشیه
    با سلام این فایل فکر کنم بدلیل قدیمی بودن قابل رویت نیست لطفا اگر در آرشیو موجوده مجددا قرار بدین تا استفاده کنیم
    ممنون

  14. سپاس ها (1)


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


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

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

    mokaram به Yahoo ارسال پیام
    نقل قول نوشته اصلی توسط علی فاطمی نمایش پست ها
    با سلام این فایل فکر کنم بدلیل قدیمی بودن قابل رویت نیست لطفا اگر در آرشیو موجوده مجددا قرار بدین تا استفاده کنیم
    ممنون
    تو آرشیوم اینا پیدا کردم خدمت شما
    فايل هاي پيوست شده فايل هاي پيوست شده




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

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

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

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

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

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

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

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