اجرا نشدن قسمتی از کد

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • master

    • 2010/07/18
    • 118

    اجرا نشدن قسمتی از کد

    سلام
    یه سری قواعد ConditionalFormatting رو به صورت ماکرو ضبط کردم و بعد دستی ویرایشش کردم
    کد رو که اجرا میکنم بدون هیچ گونه خطایی تمام میشه ولی چک که کردم یکی از قواعدی که تعریف کرده بودم انجام نشده بود بعد اجرا کد با F8 کد که به خط زیر میرسه تمام میشه و خط های بعدی دیگه اجرا نمیشه!!

    کد:
    Range("X2:X" & LastRow & ",Z2:Z" & LastRow & ",AB2:AB" & LastRow).Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
            "=NOT(hasformula(L2))"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 255
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = True
    اخرین خطی که اجرا میشه خط زیر هست:
    کد:
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
            "=NOT(hasformula(L2))"
    بعدش دیگه هیچی اجرا نمیشه
    دقیقا کد قاعده ای که تعریف نشده بود بعد از این کد ها بود جاش رو که عوض کردم تعریف شد ولی خود این کد هم تا اخر اجرا نمیشه ضمن اینکه یه چند تا دستور هم هست که میخوام بعد از این کد اجرا بشه
    کسی میدونه دلیلش چی هست؟
    فقط بگم
    یه ماژول تعریف کردم که داخلش اینو نوشتم:
    کد:
    Function HasFormula(rg As Range) As Boolean
       HasFormula = rg.HasFormula
    End Function
    اخرین خطی که اجرا میشه فرمولش به این کد ارجاع داره حالا نمیدونم ربطی به این داره یا نه

    ضمنا یه سوال دیگه:
    وقتی قاعده " اگر سلول خالی هست " رو به صورت دستی تعریف میکنم اینجوری میشه:



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



    درسته تقریبا جوابشون یکی هست ولی چطوری کد بنویسم که مثل همون حالت دستی بشه؟
    توضیح اینکه من ماکرو رو دستی ضبط کردم و تو حالت دستی مثل همون حالت اول شد ولی وقتی کدش رو رفتم نگاه کردم حالت دوم بود وقتی کد رو اجرا کردم مثل حالت دوم تو قسمت ConditionalFormatting نشون میداد
    با تشکر
  • master

    • 2010/07/18
    • 118

    #2
    سلام
    کسی نیست راهنمایی کنه؟

    کامنت

    • majid_mx4

      • 2012/06/25
      • 699

      #3
      با سلام

      دوست عزیز

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

      موفق باشید میر

      کامنت

      • master

        • 2010/07/18
        • 118

        #4
        سلام
        اینم نمونه فایل
        فایل های پیوست شده

        کامنت

        • majid_mx4

          • 2012/06/25
          • 699

          #5
          با سلام

          دوست عزیز لطفا فانکشن قبلی را با دستورات زیر تغییر دهید .
          کد:
          Function HasFormula(Cell)
          HasFormula = Cell.HasFormula
          End Function
          و خط مربوط به فانکش در کد اجرایی را بشکل زیر تغییر دهید

          کد:
           Range("X2:X" & LastRow & ",Z2:Z" & LastRow & ",AB2:AB" & LastRow).Select
              Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
               "=NOT(Cell.HasFormula(L2))"
          موفق باشید میر

          کامنت

          • master

            • 2010/07/18
            • 118

            #6
            سلام
            ممنون بابت راهنمایی فقط چند تا سوال
            مشکل چی بود که کد نیمه تمام میموند و البته خطا هم نمیداد؟
            بعضی وقتا فرمول رو من توی سلول ها به سوت دستی مینویسم الان فرمول رو تغییر دادید مشکلی که پیش نمیاره؟
            و اینکه راجع به قسمت دوم سوالم که براش عکس گذاشتم چیزی به ذهنتون میرسه راهنمایی کنید؟
            با تشکر
            ============
            ویرایش:
            من الان تست کردم درسته کد ها تا اخر اجرا میشه ولی عملکرد فانکشن درست نیست
            من میخوام توی اون رنج اگه سلول فرمول نداشت رنگش بنفش بشه ولی الان با این کد نمیشه!!!
            Last edited by master; 2017/08/17, 09:51.

            کامنت

            • majid_mx4

              • 2012/06/25
              • 699

              #7
              با سلام

              دوست من فانکش صد در صد کار میکنه ولی اگر فرمایید که دقیقا بخواهید کدام ستون یا سلول ها رنگش بنفش بشه و چرا و سلول مرجع کنترل این رنگ کدام سلول است و یا نه شما میخواهید هر خانه ای که فرمول ندارد رنگش بنفش شود بهتر میتوانم کمک کنم .

              ممنون

              کامنت

              • master

                • 2010/07/18
                • 118

                #8
                سلام
                من میخوام توی رنج زیر اگه محتویات سلول ها فرمول نبود بنفش بشه:
                کد:
                Range("X2:X" & LastRow & ",Z2:Z" & LastRow & ",AB2:AB" & LastRow).Select

                کامنت

                چند لحظه..