در فایل پیوست در صورتیکه در ساعت ورود بعنوان مثال ساعت را 17:00 و در ساعت خروج 12:00 و یا 02:00 را وارد نمائیم عملیات محاسبه صورت نمی گیرد. از چه طریق می توان مشکل را حل نمود ؟ باتشکر
کسر ساعت
Collapse
این تاپیک قفل است.
X
X
-
-
سلام دوست عزیز
این شرط رو من در کدها قرار دادم که محاسبات فقط در این صورت انجام بده که ساعت ابتدا از ساعت انتها کمتر باشه.
دو راه برای حل این مشکل هست. اول اینکه به ساعت انتها یک واحد اضافه کنید. در واقع یعنی یک روز اضافه کنید.
روش دوم اینکه این خط کد رو
به این صورت اصلاح بفرماییدکد: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
-
سلام و درود
استاد عزیز باتوجه به دستوری که ارائه کردید اصلاحات رو انجام دادم اما وقتی بعنوان مثال میزینم ساعت ورود ( 17:00 ) و ساعت خروج ( 03:00 ) مدت زمان رو به این شکل محاسبه میکنه ( -0.583333333333333 ) و محاسبات اصلی هم قاعدتاً بدرستی صورت نمی گیرن.کامنت
-
نه دوست عزیز در محاسبات مشکلی پیش نمیاد. کافیه شما در options در تب advanced تیک مربوط به گزینه use 1904 date system را فعال کنید. بعد خروجی به صورت زمان منفی نمایش داده خواهد شد.
اما اگر احساس میکنید در محاسبات مشکلی پیش میاد ساعت خروج رو همونطور که گفتم باید با عدد ۱ جمع کنید یعنی مثلا ساعت خروج ۳:۰۰ رو باید بصورت "۳:۰۰"+۱ و یا "۳:۰۰"+"۲۴:۰۰" بنویسیدکامنت
-
منظورتون این هست که اگر بعنوان مثال بخوام بزنم ساعت 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کامنت
-



کامنت