مشكل ىر اجراي ماكرويي با احراز شرط

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

    • 2015/08/14
    • 99

    مشكل ىر اجراي ماكرويي با احراز شرط

    سلام بر اساتید و دیگر دوستان
    برنامه پیچیده ای دارم که در مراحل آخرش با مشل روبرو شدم لذا با ارسال عین فایل و درخواست های دقیق امیدوارم لطف دوستان شامل حال بنده شود:
    با توجه به اینکه داده های فایل هرروز از اینترنت آپدیت میشود لذا لازم است اطلاعات روز قبل، قبل از آپدیت روز جاری کپی پست مقدار عددی شوند بنابراین کدی نیاز دارم که در اول ماکروی آپدیت که البته در یک شیت دیگر نوشته ام نوشته شود و شرایط و دستورا زیر را در شیتی که ارسال کرده ام اگر احراز شود راجرا کند سپس آپدیت انجام گیرد :
    1: اگر سلول r5<r3 باشد انگاه( value o3+value w6) در آخرین سط غیر خالی ستون f کپی پست شود و به تاریخ آخرین تارخ درج شده در ستون e یک روز اضافه شود و این کار تا زمانی که به تاریخ روز جاری که در سلول R3 درج شده است ادامه یابد
    و سپس کد آپدیتکه به شرح زیر نوشته ام اجرا شود
    Sub MacroUPDATE()'
    ' MacroUPDATE Macro
    '
    Range("o1:z1").Select
    ActiveSheet.Unprotect "123"
    ActiveWorkbook.RefreshAll
    ActiveSheet.Protect "123", DrawingObjects:=True, Contents:=True, Scenarios:=True
    End Sub
    که در قسمت ماکرو ها نیز موجود است
    خاطر نشان میکنم دکمه اجرای ماکرو و دستورات آپدیت در شیت دیگریست که میخواهم دستورات شرطی که در بالا ذکر کردم در شیت دیگر که برایتان ارسال کرده ام نیز با همین دکمه اجرا شود (یک دکمه برای دو شیت یعنی اول شروط شیت ارسالی احراز شود سپس آپدیت صورت گیرد)
    ضمنا " مقدار آخرین سطر ستون c در سلول w6
    مقدار آخرین سطر ستون e در سلول r5
    مقدار آخرین سطر ستون f در سلول t6
    ادرس مطلق آخرین سطر ستون f در سلول r6 رابا فرمول پیدا کرده ام که در صورت نیاز میتوان استفاده کرد. رمز فایل 123 با سپاس فراوان
    فایل های پیوست شده
    Last edited by taocom52; 2016/02/06, 02:28.
  • Amir Ghasemiyan

    • 2013/09/20
    • 4524
    • 100.00

    #2
    سلام دوست عزیز
    تاریخ هایی که در ستون r نوشته شده بصورت دستی هست؟ یا اینکه از توابع شمسی ساز و یا پرنیان استفاده میشه؟
    اگه بصورت دستی باشه امکان محاسبه تفاضل وجود نداره. اما بر فرض که این مسئله رو در نظر نگیریم فرمول هایی که در ستون های f و g وجود داره. علت وجود این فرمول ها چیه؟

    کامنت

    • taocom52

      • 2015/08/14
      • 99

      #3
      سلام با تشکر از توجهتان
      تاریخ سلول r3 (تاریخ امروز) توسط یک مبدل تاریخ از یک شیت دیگر به دست میاد که از یجایی دانلود کرده بودم ولی متاسفانه تاریخهای ستون e دستی هستند چون بلد نبودم از کجا و چه جوری و از چه تابعی استفاده کنم ، و چند روزیه که دارم رو این موضوع کار میکنم که در این مورد هم از راهنمایی حضرتعالی کمک میخوام
      در مورد فرمولهای ستونهای مذکور که فرمودید، این فرمولها بعد از اینکه سلول تاریخ با یک تاریخ پر شد فعال میشوند و محاسبات مخصوص خود را انجام میدهند
      کلا استاد هدف اینه که چون این فایل با یک دکمه در شیت مدیریت سهام (که بعلت اختصار در حجم فایل آن شیت را حذف کردم) آپدیت میشود ، هرگاه روز بعد آپدیت شد عددی که در ستون f هست و مربوط به روز قبل هست ثابت بشه و طبق فرمول بر اساس امروز تغییر نکنه و در همان آپدیت عدد دیروز بماند البته اگر چند روز این برنامه آپدیت نشود فاصله ای بین تاریخ آخرین آپدیت و روز جاری میافتد که بایستی این فاصله با درج تاریخهای روزهای (جا افتاده) گذشته در سلول های ستون e تا روز جاری پر شود که باالطبع عدد ستون f آن تاریخها مساوی آخرین تاریخی که آپدیت شده بود و عدد داشته خواهند شدتا نمودار مربوطه هم دارای گپ نشود .
      قبلا از مساعدت شما کمال تشکر را دارم
      Last edited by taocom52; 2016/01/29, 23:34.

      کامنت

      • Amir Ghasemiyan

        • 2013/09/20
        • 4524
        • 100.00

        #4
        نوشته اصلی توسط taocom52
        سلام با تشکر از توجهتان
        تاریخ سلول r3 (تاریخ امروز) توسط یک مبدل تاریخ از یک شیت دیگر به دست میاد که از یجایی دانلود کرده بودم ولی متاسفانه تاریخهای ستون e دستی هستند چون بلد نبودم از کجا و چه جوری و از چه تابعی استفاده کنم ، و چند روزیه که دارم رو این موضوع کار میکنم که در این مورد هم از راهنمایی حضرتعالی کمک میخوام
        در مورد فرمولهای ستونهای مذکور که فرمودید، این فرمولها بعد از اینکه سلول تاریخ با یک تاریخ پر شد فعال میشوند و محاسبات مخصوص خود را انجام میدهند
        کلا استاد هدف اینه که چون این فایل با یک دکمه در شیت مدیریت سهام (که بعلت اختصار در حجم فایل آن شیت را حذف کردم) آپدیت میشود ، هرگاه روز بعد آپدیت شد عددی که در ستون f هست و مربوط به روز قبل هست ثابت بشه و طبق فرمول بر اساس امروز تغییر نکنه و در همان آپدیت عدد دیروز بماند البته اگر چند روز این برنامه آپدیت نشود فاصله ای بین تاریخ آخرین آپدیت و روز جاری میافتد که بایستی این فاصله با درج تاریخهای روزهای (جا افتاده) گذشته در سلول های ستون e تا روز جاری پر شود که باالطبع عدد ستون f آن تاریخها مساوی آخرین تاریخی که آپدیت شده بود و عدد داشته خواهند شدتا نمودار مربوطه هم دارای گپ نشود .
        قبلا از مساعدت شما کمال تشکر را دارم
        دوست عزیز جواب سوال دیگرتون رو دادم. فکر کنم مشکل تاریخ ها حل بشه
        برای بخش دوم سوالتون کد زیر رو استفاده کنید
        این کد میاد اختلاف تاریخ روز و آخرین روز ثبت شده رو حساب میکنه و از آخرین سلول خالی به بعد شروع به پر کردن تاریخ ها میکنه تا برسه به تاریخ روز

        کد:
        Sub date_filling()
        Dim i As Integer
        diff = J_DIFF(Range("R5"), Range("R3"))
        LastRow = Right(Range("R6"), Len(Range("R6")) - 3)
        For i = 1 To diff
            LastRow = LastRow + 1
            Range("E" & LastRow) = J_ADDDAY(Range("R5"), 1, 1)
        Next i
        End Sub

        کامنت

        • taocom52

          • 2015/08/14
          • 99

          #5
          سلام مهندس جان متشکرم از جوابتان ، همان چیزیست که میخواهم ، البته به خاطر ماهیت برنامه چند روز باید تست کنم ، فقط مهندس ، همانطور که در اول سوالم مطرح کردم ، بنده یک کد برای بروز رسانی فایل از اینترنت نوشتم که توسط یک دکمه در شیتی به نام " مدیریت سهام " فعال میشود ( این کد را در اول تاپیک نوشتم براتون)، حالا میخواهم کدی را که شما برام فرستادید ( و در شیت دیگری بنام "نمودار روند دارایی" میباید اجرا شود) به اول کد بروز رسانی اضافه شود طوری که با همان دکمه بروز رسانی اول کد شما اجرا شود بعد کد بروز رسانی این موضوع برای فایل اهمیت دارد ، البته من تلاش کردم ولی چند تا ارور داد که نتونستم حل کنم . متشکرم

          کامنت

          • Amir Ghasemiyan

            • 2013/09/20
            • 4524
            • 100.00

            #6
            نوشته اصلی توسط taocom52
            سلام مهندس جان متشکرم از جوابتان ، همان چیزیست که میخواهم ، البته به خاطر ماهیت برنامه چند روز باید تست کنم ، فقط مهندس ، همانطور که در اول سوالم مطرح کردم ، بنده یک کد برای بروز رسانی فایل از اینترنت نوشتم که توسط یک دکمه در شیتی به نام " مدیریت سهام " فعال میشود ( این کد را در اول تاپیک نوشتم براتون)، حالا میخواهم کدی را که شما برام فرستادید ( و در شیت دیگری بنام "نمودار روند دارایی" میباید اجرا شود) به اول کد بروز رسانی اضافه شود طوری که با همان دکمه بروز رسانی اول کد شما اجرا شود بعد کد بروز رسانی این موضوع برای فایل اهمیت دارد ، البته من تلاش کردم ولی چند تا ارور داد که نتونستم حل کنم . متشکرم
            قراره این دکمه تو کدوم شیت باشه؟

            کامنت

            • taocom52

              • 2015/08/14
              • 99

              #7
              در شیت " مدیریت سهام" بایسی باشد البته مهندس جان من برنامه را تست کردم اشکالی که هست اینه که حتما قبل از اجرای کدی که شما ارسال کردید بایستی تاریخ امروز با آخرین تاریخ درج شده مقایسه شده و یک کپی پست کوچک انجام شود یعنی : اگر R3>R5 ( یعنی تاریخ امروز بزرگتر از آخرین تاریخ درج شده باشد) انگاه مقدار O3 در سلول روبروي (متناظر) آخرین سلول غيری خالی ستون E (که همان اخرین تاریخ درج شده در ستون E است) يعني در ستون f کپی پست value شود بطور واضح اگر در فایل پیوست توجه کنید : مثلا اگر آخرین تاریخ درج شده در ستون E7 تاریخ 94/11/20 باشد و تاریخ امروز ( سلول R3) تاریخ 94/11/21 باشد باید قبل از انجام کد شما (اضافه شدن تاریخ به سلولهای بعدی) باید مقدار Q3 درf7 کپی پست value شود تا روزهای بعد ، بعد از آپدیت مقدار F7 تغییر نکند. متشکرم
              Last edited by taocom52; 2016/02/10, 22:28.

              کامنت

              چند لحظه..