Общая наработка изделия (123ч35мин+45ч12мин). Как подсчитать

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Jeepson
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 4
Зарегистрирован: 07.04.2010 (Ср) 15:56

Общая наработка изделия (123ч35мин+45ч12мин). Как подсчитать

Сообщение Jeepson » 07.04.2010 (Ср) 16:01

Здравствуйте может кто поможет. Необходимо подсчитать наработку агрегата за месяц типа 10ч32мин+12ч45мин+8ч56мин и прибавить к общей наработке 4566ч54мин. как организовать ? чтобы после 24 часов не превращалось в сутки. Заранее благодарна.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Общая наработка изделия (123ч35мин+45ч12мин). Как подсчитать

Сообщение Денис » 07.04.2010 (Ср) 16:36

Покажите код, который у вас переводит в сутки, после 24 часов? Мы подскажем, что переделать.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Gogic
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 24.08.2008 (Вс) 13:19

Re: Общая наработка изделия (123ч35мин+45ч12мин). Как подсчитать

Сообщение Gogic » 08.04.2010 (Чт) 3:21

Перевести все в минуты, потом разделить на 60 и получить остаток.

Код: Выделить всё
Dim h1, h2, h3, newH As Long
Dim m1, m2, m3, newM As Long
Dim AllMin As Long

h1 = 10
h2 = 12
h3 = 4556

m1 = 32
m2 = 45
m3 = 54

AllMin = (h1 + h2 + h3) * 60 + m1 + m2 + m3

newH = Int(AllMin / 60)
newM = AllMin Mod 60

Debug.Print newH, newM


Как-то так.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Общая наработка изделия (123ч35мин+45ч12мин). Как подсчитать

Сообщение Денис » 08.04.2010 (Чт) 7:45

Gogic писал(а):
Код: Выделить всё
Dim h1, h2, h3, newH As Long
Dim m1, m2, m3, newM As Long


Маленькое замечание. Мне это подсказали тоже, как я пришел на этот форум. Вышеприведенный код объявляет as Long только переменные newH и newM.
Правильно будет так:
Код: Выделить всё
Dim h1 As Long, h2 As Long, h3 As Long, newH As Long
Dim m1 As Long, m2 As Long, m3 As Long, newM As Long
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

ExiliM
Новичок
Новичок
Аватара пользователя
 
Сообщения: 47
Зарегистрирован: 22.02.2010 (Пн) 4:41

Re: Общая наработка изделия (123ч35мин+45ч12мин). Как подсчитать

Сообщение ExiliM » 09.04.2010 (Пт) 0:34

Код: Выделить всё
Option Explicit
Function FullTime(ParamArray arrTime()) As String
Dim Hours As Long
Dim Minutes As Long
Dim Count As Long
For Count = LBound(arrTime) To UBound(arrTime)
Hours = Hours + Val(Mid(arrTime(Count), 1, InStr(arrTime(Count), ":") - 1))
Minutes = Minutes + Val(Mid(arrTime(Count), InStr(arrTime(Count), ":") + 1))
Next Count
Hours = Hours + Minutes \ 60
Minutes = Minutes Mod 60
FullTime = Hours & ":" & Minutes
End Function

Private Sub Command1_Click()
MsgBox FullTime("21:3", "21:54", "1:23", "5:26")
End Sub

Jeepson
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 4
Зарегистрирован: 07.04.2010 (Ср) 15:56

Re: Общая наработка изделия (123ч35мин+45ч12мин). Как подсчитать

Сообщение Jeepson » 09.04.2010 (Пт) 13:06

Огромное спасибо ExiliM вроде всё понятно может подскажите как значения времени брать из TextBox

ExiliM
Новичок
Новичок
Аватара пользователя
 
Сообщения: 47
Зарегистрирован: 22.02.2010 (Пн) 4:41

Re: Общая наработка изделия (123ч35мин+45ч12мин). Как подсчитать

Сообщение ExiliM » 10.04.2010 (Сб) 0:09

В этой строчке
Код: Выделить всё
MsgBox FullTime("21:3", "21:54", "1:23", "5:26")

вместо "21:3" пишите Text1.Text и т.д

Jeepson
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 4
Зарегистрирован: 07.04.2010 (Ср) 15:56

Re: Общая наработка изделия (123ч35мин+45ч12мин). Как подсчитать

Сообщение Jeepson » 10.04.2010 (Сб) 14:29

спасибо разобралась получилось примерно так
Код: Выделить всё
Option Explicit
Function FullTime(ParamArray arrTime()) As String
Dim Hours As Long
Dim Minutes As Long
Dim Count As Long
For Count = LBound(arrTime) To UBound(arrTime)
Hours = Hours + Val(Mid(arrTime(Count), 1, InStr(arrTime(Count), ":") - 1))
Minutes = Minutes + Val(Mid(arrTime(Count), InStr(arrTime(Count), ":") + 1))
Next Count
Hours = Hours + Minutes \ 60
Minutes = Minutes Mod 60
FullTime = Hours & ":" & Minutes
End Function

Private Sub Command1_Click()
Dim A, B, C, D, E, F, G As String
Dim nVar As Integer
Badtime:
A = MaskEdBox1
If IsDate(MaskEdBox1) = False Then
MsgBox "Íåïðàâèëüíûå äàííûå" & vbCr & "     â ïîëå âûëåò 1 "
MaskEdBox1 = "00:00"
Exit Sub
GoTo Badtime:
Else
End If
B = MaskEdBox2
If IsDate(MaskEdBox2) = False Then
MsgBox "Íåïðàâèëüíûå äàííûå" & vbCr & "     â ïîëå âûëåò 2 "
MaskEdBox2 = "00:00"
Exit Sub
GoTo Badtime:
Else
End If
C = MaskEdBox3
If IsDate(MaskEdBox3) = False Then
MsgBox "Íåïðàâèëüíûå äàííûå" & vbCr & "     â ïîëå âûëåò 3 "
MaskEdBox3 = "00:00"
Exit Sub
GoTo Badtime:
Else
End If
D = MaskEdBox4
If IsDate(MaskEdBox4) = False Then
MsgBox "Íåïðàâèëüíûå äàííûå" & vbCr & "     â ïîëå âûëåò 4 "
MaskEdBox4 = "00:00"
Exit Sub
GoTo Badtime:
Else
End If
E = FullTime(A, B, C, D)
Label1.Caption = E
F = Label2.Caption
G = FullTime(E, F)
MsgBox "Ïðîâåðü ââåä¸ííûå äàííûå" & vbCr & A & vbCr & B & vbCr & C & vbCr & D & vbCr & E & "   Íàðàáîòêà çà äåíü" & vbCr & G & "  Îáùàÿ íàðàáîòêà"
Label2.Caption = G
End Sub

пытаюсь сделать MSGBOX с кнопками да, нет для отмены введённых данных пока не пойму.

ExiliM
Новичок
Новичок
Аватара пользователя
 
Сообщения: 47
Зарегистрирован: 22.02.2010 (Пн) 4:41

Re: Общая наработка изделия (123ч35мин+45ч12мин). Как подсчитать

Сообщение ExiliM » 10.04.2010 (Сб) 21:24

для того, что б дать пользователю выбрать да или нет, делаем например следующее..

Код: Выделить всё
Sub Vihod()
Dim Otvet as long
Otvet = MsgBox ("Хотите ли выйти из программы?", vbOKCancel + vbExclamation, "Выход") 'Где vbOkCancel - Кнопки, vbExclamation - тип сообщения(критическое, уведомление и т.д) и Выход - Заголовок MsgBox'a
'Далее
If Otvet = vbOk then
end      ' Если нажата клавиша ок, то....конец программы
else      ' В других случаях(то есть, если нажата кнопка отмены [Cancel])
Exit Sub ' Заканчиваем процедуру(Выход) то есть ничего не происходит
End If
End Sub


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 58

    TopList