Saate(zaman süreli) göre kontrol

Katılım
6 Şubat 2006
Mesajlar
59
Excel Vers. ve Dili
Excel 2003
Selamlar iş yoğunluğum ve diğer sebeplerden ötürü uzun süredir foruma vakit ayıramıyordum. Değerli üstadlarımın (Necdet Yertsener,Veysel Emre, Cost Control) destekleriyle yapmış olduğumuz eski bir yemek takip programı var ancak bu programda bir sıkıntım var şöyleki program barkodlu olarak çalışıyor personel barkodunu okutup yemek fişini yada red fişini alıyor fakat burada kişi bir günde bir kez yemek hakkına sahip Benim şimdi yapmak istediğim kişi öğlen geldi yemek yedi 5 saat süreyle yemek hakkı olmayacak program kişiye 5 saat sonra tekrar yemek hakkı verecek (öğlen yedi 5 saat yok akşam tekrar fiş hakkı olacak)denemeler yaptım ama bi türlü beceremedim önerilerinizi ve fikirlerinizi bekliyorum. Aşağıda tarihe göre kontrol var ama ben saat kontrolu yapmak istiyorum. Saygılar ve teşekkürler.
Program örneği ekte yeralmaktadır.
For i = 2 To [A65536].End(3).Row
If i <> Target.Row And Target.Value = Cells(i, 1) And Cells(i, 5) = Date Then
UserForm2.Label1.Caption = Cells(i, 2) & " " & Cells(i, 3) & " " & (Cells(i, 5) & " Tarihinde " & " Saat " & Format(Cells(i, 6), "hh:mm")) & " Yemek Yedi"
UserForm2.Show
Target = ""
Target.Select
Exit Sub
End If
Next i
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Sorunuz tam olarak anla&#351;&#305;lm&#305;yor, rapor sayfas&#305;na veriler direk sayfa &#252;zerindemi giriliyor, yoksa userformdanm&#305;? ben dosyan&#305;zdaki userfornlarda b&#246;yle bir aray&#252;z g&#246;rmedim.
 
Katılım
6 Şubat 2006
Mesajlar
59
Excel Vers. ve Dili
Excel 2003
say&#305;n hocam direk sayfa &#252;zerinden veri giriliyor.Rapor sayfas&#305; ayn&#305; zamanda veri giri&#351; sayfas&#305; ,yani rapor sayfas&#305;ndan klavye giri&#351;li bir barkod okuyucuyla veri girilerek program &#231;al&#305;&#351;&#305;yor
 
Katılım
6 Şubat 2006
Mesajlar
59
Excel Vers. ve Dili
Excel 2003
Bu arada user formlar sadece fi&#351; bas&#305;m&#305; ile ilgili bir fi&#351; yaz&#305;c&#305;s&#305;na ba&#287;l&#305; olacak yemek fi&#351;i yada yemek yediniz fi&#351;i yada m&#252;racat fi&#351;i basacak duruma g&#246;re basacak. Ayn&#305; ki&#351;i &#246;&#287;len yedi&#287;inde 4 saat boyunca giri&#351; yap&#305;ld&#305;&#287;&#305;nda sen yemek yedin mesaj&#305; alacak 4 saat sonra tekrar yemek fi&#351;i alabilecek &#351;u anda bu g&#252;n yemek yiyen bu g&#252;n i&#231;inde bir daha fi&#351; alam&#305;yor. Sayg&#305;lar&#305;mla
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Rapor sayfas&#305;ndaki kodu a&#351;a&#287;&#305;daki ile de&#287;i&#351;tirerek denermisiniz. Saati A s&#252;tununa girilen TC kimlik noya g&#246;re yapmaktad&#305;r.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, [a2:a65536]) Is Nothing Then Exit Sub
If Target = 0 Then
    Rows(Target.Row).ClearContents
    Exit Sub
End If
say = WorksheetFunction.CountIf([a:a], Target)
If say > 0 Then saat = 24 * (CDbl(Time) - CDbl([a1:a65536].Find(Target).Offset(0, 5)))
If saat < 5 Then
MsgBox "Yazd&#305;&#287;&#305;n&#305;z Ki&#351;inin Yemek yeme S&#252;resi Dolmam&#305;&#351;t&#305;r.", 42, "Uyar&#305; !"
Exit Sub
End If
Sat = 0
Sat = Sheets(2).[a1:a65536].Find(Target.Value).Row
If Sat > 0 Then
    Cells(Target.Row, "B") = Sheets(2).Cells(Sat, "B")
    Cells(Target.Row, "C") = Sheets(2).Cells(Sat, "C")
    Cells(Target.Row, "D") = Sheets(2).Cells(Sat, "D")
    Cells(Target.Row, "E").Value = Date
    Cells(Target.Row, "F").Value = Time
Else
    UserForm2.Label1.Caption = "Yemekhane Kayd&#305;n&#305;z Yok Hastane M&#252;d&#252;r&#252;ne M&#252;racaat Ediniz"
    UserForm2.Show
    Target.Select
    Exit Sub
End If
For i = 2 To [A65536].End(3).Row
If i <> Target.Row And Target.Value = Cells(i, 1) And Cells(i, 5) = Date Then
    UserForm2.Label1.Caption = Cells(i, 2) & " " & Cells(i, 3) & " " & (Cells(i, 5) & " Tarihinde " & " Saat " & Format(Cells(i, 6), "hh:mm")) & " Yemek Yedi"
    UserForm2.Show
    Target = ""
    Target.Select
    Exit Sub
    End If
Next i
UserForm1.Show
End Sub
 
Üst