کسر ساعت

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • mobinsaffarpour

    • 2013/05/25
    • 176

    [حل شده] کسر ساعت

    باسلام خدمت اساتید محترم
    در فایل پیوست در صورتیکه در ساعت ورود بعنوان مثال ساعت را 17:00 و در ساعت خروج 12:00 و یا 02:00 را وارد نمائیم عملیات محاسبه صورت نمی گیرد. از چه طریق می توان مشکل را حل نمود ؟ باتشکر
    فایل های پیوست شده
  • Amir Ghasemiyan

    • 2013/09/20
    • 4598
    • 100.00

    #2
    سلام دوست عزیز
    این شرط رو من در کدها قرار دادم که محاسبات فقط در این صورت انجام بده که ساعت ابتدا از ساعت انتها کمتر باشه.
    دو راه برای حل این مشکل هست. اول اینکه به ساعت انتها یک واحد اضافه کنید. در واقع یعنی یک روز اضافه کنید.
    روش دوم اینکه این خط کد رو
    کد:
    If IsEmpty(Persons) Or IsEmpty(EnterTime) Or IsEmpty(ExitTime) Or (ExitTime < EnterTime) Then Exit Sub
    به این صورت اصلاح بفرمایید
    کد:
    If IsEmpty(Persons) Or IsEmpty(EnterTime) Or IsEmpty(ExitTime) Then Exit Sub

    کامنت

    • mobinsaffarpour

      • 2013/05/25
      • 176

      #3
      سلام و درود
      استاد عزیز باتوجه به دستوری که ارائه کردید اصلاحات رو انجام دادم اما وقتی بعنوان مثال میزینم ساعت ورود ( 17:00 ) و ساعت خروج ( 03:00 ) مدت زمان رو به این شکل محاسبه میکنه ( -0.583333333333333 ) و محاسبات اصلی هم قاعدتاً بدرستی صورت نمی گیرن.

      کامنت

      • Amir Ghasemiyan

        • 2013/09/20
        • 4598
        • 100.00

        #4
        نوشته اصلی توسط mobinsaffarpour
        سلام و درود
        استاد عزیز باتوجه به دستوری که ارائه کردید اصلاحات رو انجام دادم اما وقتی بعنوان مثال میزینم ساعت ورود ( 17:00 ) و ساعت خروج ( 03:00 ) مدت زمان رو به این شکل محاسبه میکنه ( -0.583333333333333 ) و محاسبات اصلی هم قاعدتاً بدرستی صورت نمی گیرن.
        نه دوست عزیز در محاسبات مشکلی پیش نمیاد. کافیه شما در options در تب advanced تیک مربوط به گزینه use 1904 date system را فعال کنید. بعد خروجی به صورت زمان منفی نمایش داده خواهد شد.
        اما اگر احساس میکنید در محاسبات مشکلی پیش میاد ساعت خروج رو همونطور که گفتم باید با عدد ۱ جمع کنید یعنی مثلا ساعت خروج ۳:۰۰ رو باید بصورت "۳:۰۰"+۱ و یا "۳:۰۰"+"۲۴:۰۰" بنویسید

        کامنت

        • mobinsaffarpour

          • 2013/05/25
          • 176

          #5
          منظورتون این هست که اگر بعنوان مثال بخوام بزنم ساعت 3 بجاش بزنم 27 ؟ یا من درست متوجه نشدم ...
          اگر منظور این هست که برای کاربر سخت میشه
          راهی نیست که 3 رو همون 3 بزنه ؟

          کامنت

          • Amir Ghasemiyan

            • 2013/09/20
            • 4598
            • 100.00

            #6
            نوشته اصلی توسط mobinsaffarpour
            منظورتون این هست که اگر بعنوان مثال بخوام بزنم ساعت 3 بجاش بزنم 27 ؟ یا من درست متوجه نشدم ...
            اگر منظور این هست که برای کاربر سخت میشه
            راهی نیست که 3 رو همون 3 بزنه ؟

            بله درست متوجه شدید
            راه دیگه اینه که ساب calc رو به این صورت اصلاح کنید:
            کد:
            Sub Calc()
            Row = VE.Shapes(Application.Caller).TopLeftCell.Row
            Persons = Range("B" & Row)
            EnterTime = Range("C" & Row)
            ExitTime = Range("D" & Row)
            
            
            If IsEmpty(Persons) Or IsEmpty(EnterTime) Or IsEmpty(ExitTime) Then Exit Sub
            
            
            Duration = ExitTime - EnterTime
            If Duration < 0 Then Duration = Duration + 1
            
            
            Range("E" & Row) = Duration
            
            
            If Duration * 24 < 1 Then
                COST = Range("Nerkh1").Value
            Else
                newDuration = Application.WorksheetFunction.RoundUp(Duration * 24, 0) - 1
                COST = Range("Nerkh1").Value + Range("Nerkh2").Value * newDuration
            End If
            
            
            Range("G" & Row) = COST
            
            
            Range("F" & Row) = COST / Persons
            End Sub

            کامنت

            • mobinsaffarpour

              • 2013/05/25
              • 176

              #7
              متشکرم استاد عزیز لطف کردید. یک دنیا ممنون. مرسی از اینکه وقت گذاشتید.

              کامنت

              چند لحظه..