استفاده از یه تابع در تابع دیگر

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

    • 2013/10/04
    • 86

    پرسش استفاده از یه تابع در تابع دیگر

    با سلام خدمت اساتید ودوستان محترم
    یه تابعی تعریف کردم ، حالا میخوام از این تابع در یک تابع دیگر استفاده کنم ارورمیده
    یه سوال دیگه ای هم داشتم و اون این که میتونم تابع اول رو بصورت sub تعریف کنم که دیگه خودش بصورت خودکار اعداد مورد نظر رو از sheet برداره و دیگه نیازی به ورودی نداشته باشم
    فایل های پیوست شده
    Last edited by reza_1001; 2020/03/07, 10:19.
  • reza_1001

    • 2013/10/04
    • 86

    #2
    سلام بر اساتید ودوستان
    ببخشید کسی نتونست مشکل منو حل کنه

    کامنت

    • Amir Ghasemiyan

      • 2013/09/20
      • 4598
      • 100.00

      #3
      سلام دوست عزیز
      متوجه تابعتون نشدم. pl(1) یعنی چی؟ قراره چکار کنه؟
      علت خطایی که در تابع دارین اینه که ورودی های تابع nad رو تعریف نکردین. اول باید ورودی ها رو بهش بدین بعد ازش استفاده کنید

      در مورد سوال دومتون که گفتین میشه ورودی ندیم بله میشه ندیم ولی دیگه انعطاف قبل رو نداره. مثلا باید همه داده ها همیشه زیر هم باشن یا اینکه همه داده ها در سلول A1 تا A6 تعریف بشه

      کامنت

      • reza_1001

        • 2013/10/04
        • 86

        #4
        سلام آقای قاسمیان ، ممنون از جوابتون

        در مورد pl باید عرض کنم که از یه dll فراخوانی میشه ومشکلی نداره
        مشکل من همینه که در تابع دوم دیگه نمیخوام ورودی هایی year ,....رو که در تابع اول وارد کردم دوباره در تابع دوم وارد کنم بلکه میخوام فقط ورودی pl رو وارد کنم و در jul_day_ut از خروجی تابع nad بصورت خودکار استفاده کنه
        در مورد سوال دومتون مشکلی نداره چون همیشه یه ستونهای خاصی زیر هم هستن
        Last edited by reza_1001; 2020/03/08, 12:14.

        کامنت

        • reza_1001

          • 2013/10/04
          • 86

          #5
          سلام آقای قاسمیان صبحتون بخیر ، چی شد تونستید حلش کنید ؟ بدجور توی این مشکل موندم ، منتظر پاسخ شما هستم
          Last edited by reza_1001; 2020/03/09, 08:37.

          کامنت

          • reza_1001

            • 2013/10/04
            • 86

            #6
            چی شد کسی بجزآقای قاسمیان نیست که مشکلموحل کنه

            کامنت

            • iranweld

              • 2015/03/29
              • 3341

              #7
              با سلام

              کد ذیل را تست کنید

              در تابع دوم از نتیجه فرمول nad و عدد دوم مد نظر خود استفاده کنید x1 یا x2 را به نتیجه فرمول nad در سلول مورد نظر ارجاع دهید

              چون نحوه محاسبه تابع دوم را نداشتم فرمول ضرب مقدار nad و یک عدد دیگر را قرار دادم

              کد PHP:
              Function nad(yearMonthDayhourminsec)
                    
                 
              Dim time As Double
                 Dim XIM 
              As Double
                 Dim XJD 
              As Double
                 Dim a 
              As Double
                 Dim b 
              As Double

                  XIM 
              12 * (CDbl(year) + 4800) + Month 3

                  XJD 
              = (* (XIM Int(XIM 12) * 12) + 365 XIM) / 12
                  XJD 
              Int(XJD) + Day Int(XIM 48) - 32083
                  XJD 
              = (XJD Int(XIM 4800) - Int(XIM 1200) + 38)
                  


                  
              time = (hour min 60 sec 3600) / 24
                 
                  
                  nad 
              = (XJD 0.5) + time
                  
                      
                  End 
              Function
                  
                  
              Public Function 
              pl(x1x2 As Double) As Double


              pl 
              x1 x2

                  
              End 
              Function 
              Last edited by iranweld; 2020/03/09, 11:30.

              کامنت

              • reza_1001

                • 2013/10/04
                • 86

                #8
                ممنون از پاسختون ولی این راه حل شما مشکلمو حل نکرد
                من گفتم که در در تابع دوم دیگه نمیخوام دوتا ورودی داشته باشم بلکه یه ورودی از طریق تابع اولی تامین بشه وفقط یه ورودی number_pl داشته باشم
                همچنین در تابع اول هم خودش بصورت خودکار از یه ستونهایی که تعیین میکنم مقادیر year , month ,..... رو برداره ومحاسبه بکنه

                کامنت

                • iranweld

                  • 2015/03/29
                  • 3341

                  #9
                  بدین صورت که مقادیر سلول های ورودی در تابع تعریف بشه
                  کد PHP:
                  Function nad()
                        
                     
                  Dim time As Double
                     Dim XIM 
                  As Double
                     Dim XJD 
                  As Double
                     Dim a 
                  As Double
                     Dim b 
                  As Double

                      XIM 
                  12 * (CDbl(Sheet1.range("A1") + 4800) + Sheet1.range("b2") - 

                  کامنت

                  • reza_1001

                    • 2013/10/04
                    • 86

                    #10
                    دستتون درد نکنه مشکل تابع اول که خودش خودکار برداره و محاسبه کنه حل شد
                    حالا میمونه مشکل اصلی توی تابع دوم که چطوری یه ورودی داشته باشه ؟؟؟؟؟ و برای ورودی دوم بطور خودکار از خروجی تابع اول استفاده کنه

                    کامنت

                    • iranweld

                      • 2015/03/29
                      • 3341

                      #11
                      نوشته اصلی توسط reza_1001
                      دستتون درد نکنه مشکل تابع اول که خودش خودکار برداره و محاسبه کنه حل شد
                      حالا میمونه مشکل اصلی توی تابع دوم که چطوری یه ورودی داشته باشه ؟؟؟؟؟ و برای ورودی دوم بطور خودکار از خروجی تابع اول استفاده کنه
                      به همین صورت ، محاسبات تابع دوم را نیز در تابع اول انجام بدید

                      ابتدا محاسبات nad انجام میشه و بعد از مقدار nad و عدد بعدی محاسبه نهایی انجام شود

                      کامنت

                      • reza_1001

                        • 2013/10/04
                        • 86

                        #12
                        این راهی که میگید به ذهن خودمم اومد ولی مشکل اینه که بیش از 100 تابع دیگه باید از خروجی تابع nad استفاده کنن و بخوام همه این مراحل رو توی اون 100 تابع دیگه بنویسم هم کار وقت گیریه و هم حجم فایل بشدت افزایش پیدا میکنه
                        اگه راه دیگه ای سراغ دارید بفرمایید

                        کامنت

                        • reza_1001

                          • 2013/10/04
                          • 86

                          #13
                          البته حالا این کاری که گفتین توی فایل اصلی انجام دادم خطای value میده

                          کامنت

                          • iranweld

                            • 2015/03/29
                            • 3341

                            #14
                            نوشته اصلی توسط reza_1001
                            البته حالا این کاری که گفتین توی فایل اصلی انجام دادم خطای value میده
                            فراخوانی فانکشن nad در فانکشن های دیگر بدون نیاز به محاسبه کردن اولیه فانکشن nad

                            کد PHP:
                            Public Function pl(popr As Double) As Double

                            nad

                            x1 
                            nad popr

                            pl 
                            x1

                                
                            End 
                            Function 
                            فایل های پیوست شده

                            کامنت

                            • reza_1001

                              • 2013/10/04
                              • 86

                              #15
                              سلام داداش دستت درد نکنه ، فایل رودیدم یه مشکلی داره و اون اینکه وقتی تاریخ رو تغییرمیدم هیچ فرقی در خروجی pl بوجود نمیاد ولی وقتی یه بار روی سلولی که تابع pl هست میرم و روی فرمولش اینتر میکنم تغییر بوجود میاد
                              میدونید مشکل چیه؟
                              Last edited by reza_1001; 2020/03/10, 11:06.

                              کامنت

                              چند لحظه..