DTPicker.Value

7 отговора 0 прегледа
#1

DTPicker.Value

Здравейте! За много години!

Бих искала да попитам, тъй като досега не съм използвала тази контрола а именно:DTPicker1.Value. По същество - Във userform1 съм поставила контролите DTPicker1.Value и DTPicker2.Value, (CustomFormat: HH:mm; Format: DtpCustom - 3
По този начин съм настроила свойствата за работа с часове. До тук добре!
Сега, въпросът ми е кое събитие да използвам, че в textbox1 да получавам разликата от (DTPicker2.Value - DTPicker1.Value). Използвайки вградените функции на Excel а именно: =D2-C2+IF(C2>D2;1) с тях се справям.
Едно примерче да дам, за да е ясно: DTPicker1.Value (22:00)ч, а DTPicker2.Value е (06:00) ч. Искам да извадя от DTPicker2.Value DTPicker1.Value тоест 06:00 - 22:00 и в textbox1 да получа 8.
Благодаря!

Отговор
в отговор на intermaniq #2

Re: DTPicker.Value

ако не те интересуват минутите,а само часовете:

Private Sub DTPicker1_Change()
textBox1.value=DTPicker1.Hour - DTPicker2.Hour
End Sub

Private Sub DTPicker2_Change()
textBox1.value=DTPicker1.Hour - DTPicker2.Hour
End Sub

ако искаш резултата да се показва при всяка промяна..Ако ли не - направи един бутон и го смятай при цъкването на него..

Отговор
в отговор на BatiGogo #3

Re: DTPicker.Value

Здравей!

Благодаря ти че ми помагаш!
Да и минутите ме интересуват. Има и проблем, а той се състои в следното: когато извадим 06:00 от 22:00 часа не се получава 8 часа а 16 часа. Само да вметна този проблем съм го решил с вградените функции ( D3-C3+IF(C3>D3;1) като в клетка D3 (06:00) - клетка C3 (22:00)+if(C3>D3;1). А тук във VBA не зная как да стане.

Отговор
в отговор на intermaniq #4

Re: DTPicker.Value

Нещо не мога да ти схвана логиката.
Искаш ако от по-голям час, се извади по-малък час - разликата да излиза, Но ако е повече от 12 часа да излиза число по-малко от 12? Демек 12 часово време, а не 24-часово?
А ако от по-малък час се извади по-голям - то тогава какво?
Да разбирам ли,че по-големия час е от предната дата?

Иначе ако ти е ясно на тебе и в клетките на ексела го пишеш и става - какъв е проблема да си дефинираш 2 променливи (C3 и D3 например)..На едната дай DTPicker1.value, на другата DTPicker2.value и си смятай каквото и както си искаш...

Все пак уточни какво точно изкаш да постигнеш и ще разсъждаваме нататък...
С минутите също. Не е лошо да дадеш пример с часове и минути (06:45 и 22:12 напр)

Отговор
в отговор на BatiGogo #5

Re: DTPicker.Value

Точно така - по-големият час е от предишната дата.
Това, което искам да постигна ти си го направил, само, че не зная защо времето от 22:00 до 06:00 на сутринта са 16 часа, а не 8часа.
Благодаря!

Отговор
в отговор на intermaniq #6

Re: DTPicker.Value

Dim Vreme1 As Long, Vreme2 As Long, Vreme As Long
Vreme1 = DTPicker1.Hour
Vreme2 = DTPicker2.Hour
If Vreme2 > Vreme1 Then
Vreme = Vreme2 - Vreme1
Else
Vreme = Vreme2 + (24 - Vreme1)
End If
TextBox1.Value = Vreme

може би нещо от тоя вид,а?

Отговор
в отговор на BatiGogo #7

Re: DTPicker.Value

Мнооого БЛАГОДАРЯ "BatiGogo!!!!!!!
СТАНААААААААААААААААААААААААААААААА!!!!!!

Отговор
в отговор на intermaniq #8

Re: DTPicker.Value

е, ако си любител на по-сбития код, можеш да го запишеш във вида:

Dim Vreme1 As Long, Vreme2 As Long, Vreme As Long
Vreme1 = DTPicker1.Hour
Vreme2 = DTPicker2.Hour
TextBox1.Value = IIf(Vreme2 > Vreme1, Vreme2 - Vreme1, Vreme2 - Vreme1 + 24)

Даже и да пропуснеш дефиницията Dim...
Въпрос на стил на програмиране.

Важното е,че сметката е станала...Успех!

Отговор