• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Giriş-çıkış raporlama ve düğme pasifleştirme (yardım lütfen)

Katılım
5 Şubat 2016
Mesajlar
274
Excel Vers. ve Dili
Office 365 Türkçe
Merhabalar, PLİNT'ten yardım alarak excel dosyasında personelin günlük giriş çıkışlarını kayıt eden bir dosya yaptık. Fakat bazı eksiklikler var.Şöyle ki;

1-Rapor isimli sayfada sadece geçerli gün için giriş çıkışları görmek istiyorum.Dosyayı aylık giriş çıkışları kayıt edip , her ay yeni dosya oluşturacağım.Ama raporlar isimli çalışma sayfasına geldiğimde sadece geçerli güne ait giriş çıkışları görmek istiyorum.

2-Giriş Çıkış şeklinde 2 adet buton var , tahmin ettiğiniz gibi girerken giriş butonuna çıkarken çıkışa basıyorlar ve o anki tarih ve saati alt alt kayıt ediyor.Ama tekrar tekrar girişe engel olmak için düğmenin 1 kere tıklandıktan sonra o günün sonuna kadar pasif olmasını istiyorum (gün sonuna kadar olmuyorsa farklı bir fikirede açığım)

3-Çıkışa basmadan girişe , girişe basmadan da çıkışa basmasın.

Dosya ektedir.Yardımlarınızı istiyorum üstatlar.
http://s3.dosya.tc/server7/edpr7h/IN-OUTT.xls.html
 
Merhaba
Ek dosyayı deneyelim
http://www.dosya.tc/server6/2x33a1/IN-OUTT.zip.html
Dosyadaki kodlarda yeni işlem için süre 5 dakikadır siz artırıp azaltabilirsiniz
Kod:
TimeValue("00:[COLOR="Red"]05[/COLOR]:00")

Üstat yine günü kurtardın teşekkür ederim. Sadece şu rapor işi kaldı. Günlük rapor şeklinde nasıl görebilirim ? mesela bugün ayın 10'u , rapor isimli sheet sadece ayın 10'una ait olan giriş çıkışları listeleyebilme imkanı varmı ?
 
Üstat yine günü kurtardın teşekkür ederim. Sadece şu rapor işi kaldı. Günlük rapor şeklinde nasıl görebilirim ? mesela bugün ayın 10'u , rapor isimli sheet sadece ayın 10'una ait olan giriş çıkışları listeleyebilme imkanı varmı ?
Merhaba
Rapor adlı sayfa açıldığında eğer bugün giriş çıkış varsa otomatik listeleyecek
yoksa isimlerin karşısı boş kalacaktır bugün için birkaç giriş yapıp; ilgili sayfayı seçerek deneyin.
 
Üstat dikkatimi yeni çekti , vallahi ellerine sağlık . Seni gerçekten uğraştırdım ama beni büyük bir yükten kurtardın. Hocam yalnız rapor sayfasında "Set s3 = Sheets(s1.Cells(a, 3).Text) şöyle bir hata veriyor" . Sebebi ne olabilir ? Ve personelin C hücresine de her günün satırına 12:00-13:30 yazma imkanı var mı?. Bu da öğle tatili olduğunu belirtecek ve rapordan çıktı alıp imzalatıcam. Mesela girişe bastığında onu da otomatik C ye yazsın 12:00-13:30 diye.
 
Son düzenleme:
Hocam peki şöyle bir şey mümkün müdür acaba . Şimdi bu yaptığımız sistemde bazı hocalar unutuyor çıkışa basmayı gidiyorlar. Hali ile orası boş kalıyor. Boş kalanları hafta içi 17:30 hafta sonu ise 19:30 şeklinde otomatik doldurma imkanımız var mı ?
 
Merhaba
Modülde; ilgili başlık altındaki kodları aşağıdaki gibi deneyelim,
saat 12:00 den sonra yapılan "giriş" kayıtları için ekleme yapmaya çalıştım.
Kod:
Sub giriş_çıkış()
Set s1 = Sheets("MAIN")
 m = Application.Caller
m2 = ActiveSheet.Shapes(m).TopLeftCell.Column
m3 = ActiveSheet.Shapes(m).TopLeftCell.Row
If m2 = 4 Then a = 1 Else a = 2
On Error Resume Next
Set r = Sheets(s1.Cells(m3, "C").Value)
If Err > 0 Then
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = s1.Cells(m3, "C").Value
[a1] = "GİRİŞ": [B1] = "ÇIKIŞ"
Sheets(Sheets.Count).Columns("A:B").ColumnWidth = 18.4
s1.Activate
Set r = Sheets(s1.Cells(m3, "C").Value)
Err = 0
End If
x = r.Cells(Rows.Count, a).End(3).Row + 1
If a = 2 Then
If r.Cells(x, 1) = "" Then
MsgBox "ÇIKIŞ KAYDEDİLMEYECEK; GİRİŞ EKSİK veya OTOMATİK EKLENMİŞ", vbCritical
Exit Sub
End If: End If
x2 = r.Cells(Rows.Count, 1).End(3).Row
If a = 1 Then
If x2 <> r.Cells(Rows.Count, 2).End(3).Row Then
MsgBox "GİRİŞ-ÇIKIŞ KAYITLARI EŞİT DEĞİL"
Exit Sub
End If:

End If
If x2 > 1 Then
If CDate(r.Cells(x2, 1)) + TimeValue("00:05:00") > CDate(Now) Or CDate(r.Cells(x2, 2)) + TimeValue("00:05:00") > CDate(Now) Then
MsgBox "YENİ İŞLEM İÇİN SÜRENİZ DOLMADI", vbCritical
 Exit Sub
 End If: End If
 
With r
.Cells(x, a).NumberFormat = "dd/mm/yyyy dddd hh:mm;@"
.Cells(x, a) = Now
If a = 1 Then
If CDbl(TimeValue(.Cells(x, a).Value)) > 0.5 Then
fr = Weekday(.Cells(x, a).Value, vbMonday)
If fr = 7 Then Exit Sub
If fr < 6 Then st = 0.72916666
If fr = 6 Then st = 0.81249999
.Cells(x, a + 1) = CDbl(DateValue(.Cells(x, a).Value)) + st
.Cells(x, a + 1).NumberFormat = "dd/mm/yyyy dddd hh:mm;@"
End If: End If

End With
aranan = Format(Now, "dd.mm.yyyy")
For j = 2 To x
If r.Cells(j, 1) Like aranan & "*" Then
r.Cells(j, 3) = "12:00-13:30"
Exit For
End If
Next
MsgBox "KAYIT YAPILDI"
End Sub
 
Merhaba
Modülde; ilgili başlık altındaki kodları aşağıdaki gibi deneyelim,
saat 12:00 den sonra yapılan "giriş" kayıtları için ekleme yapmaya çalıştım.
Kod:
Sub giriş_çıkış()
Set s1 = Sheets("MAIN")
 m = Application.Caller
m2 = ActiveSheet.Shapes(m).TopLeftCell.Column
m3 = ActiveSheet.Shapes(m).TopLeftCell.Row
If m2 = 4 Then a = 1 Else a = 2
On Error Resume Next
Set r = Sheets(s1.Cells(m3, "C").Value)
If Err > 0 Then
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = s1.Cells(m3, "C").Value
[a1] = "GİRİŞ": [B1] = "ÇIKIŞ"
Sheets(Sheets.Count).Columns("A:B").ColumnWidth = 18.4
s1.Activate
Set r = Sheets(s1.Cells(m3, "C").Value)
Err = 0
End If
x = r.Cells(Rows.Count, a).End(3).Row + 1
If a = 2 Then
If r.Cells(x, 1) = "" Then
MsgBox "ÇIKIŞ KAYDEDİLMEYECEK; GİRİŞ EKSİK veya OTOMATİK EKLENMİŞ", vbCritical
Exit Sub
End If: End If
x2 = r.Cells(Rows.Count, 1).End(3).Row
If a = 1 Then
If x2 <> r.Cells(Rows.Count, 2).End(3).Row Then
MsgBox "GİRİŞ-ÇIKIŞ KAYITLARI EŞİT DEĞİL"
Exit Sub
End If:

End If
If x2 > 1 Then
If CDate(r.Cells(x2, 1)) + TimeValue("00:05:00") > CDate(Now) Or CDate(r.Cells(x2, 2)) + TimeValue("00:05:00") > CDate(Now) Then
MsgBox "YENİ İŞLEM İÇİN SÜRENİZ DOLMADI", vbCritical
 Exit Sub
 End If: End If
 
With r
.Cells(x, a).NumberFormat = "dd/mm/yyyy dddd hh:mm;@"
.Cells(x, a) = Now
If a = 1 Then
If CDbl(TimeValue(.Cells(x, a).Value)) > 0.5 Then
fr = Weekday(.Cells(x, a).Value, vbMonday)
If fr = 7 Then Exit Sub
If fr < 6 Then st = 0.72916666
If fr = 6 Then st = 0.81249999
.Cells(x, a + 1) = CDbl(DateValue(.Cells(x, a).Value)) + st
.Cells(x, a + 1).NumberFormat = "dd/mm/yyyy dddd hh:mm;@"
End If: End If

End With
aranan = Format(Now, "dd.mm.yyyy")
For j = 2 To x
If r.Cells(j, 1) Like aranan & "*" Then
r.Cells(j, 3) = "12:00-13:30"
Exit For
End If
Next
MsgBox "KAYIT YAPILDI"
End Sub

Ellerine sağlık hocam deniyorum , bu akşam bir geçsin mutlaka unutan olacak. Yarın gerekli malumatı vereceğim sana. Teşekkür ederim.
 
Ellerine sağlık hocam deniyorum , bu akşam bir geçsin mutlaka unutan olacak. Yarın gerekli malumatı vereceğim sana. Teşekkür ederim.

Üstat yine bilgine ihtiyacım var. Giriş çıkış yapınca kaydedildi , ya da giriş çıkış eşit değil diye uyarılar verdiriyorduk ya. Şimdi Zil çalan bilgisayara bağlı olduğu için giriş yapınac öğretmen xp yüklü olduğu için kayıt edildi yazınca tüm kurumda Dınk diye bir ses yankılanıyor. Bu sesi devredışı bırakma gibi bir seçeneğimiz var mı ? :)
 
Merhaba
Ekladiğim kodlar içinde yoktu; siz şöyle (veya değişik) bir uyarı kullanıyorsanız kaldırın.
Kod:
MsgBox "KAYIT YAPILDI"[COLOR="Red"], vbInformation[/COLOR]
Şöyle ses vermemesi lazım.
Kod:
MsgBox "KAYIT YAPILDI"

Daha olmazsa bunu silerek; yerine aşağıdaki gibi deneyelim.
Kod:
CreateObject("WScript.Shell").Popup "KAYIT YAPILDI", , "OKULUMUZ"
 
Merhaba
Ekladiğim kodlar içinde yoktu; siz şöyle (veya değişik) bir uyarı kullanıyorsanız kaldırın.
Kod:
MsgBox "KAYIT YAPILDI"[COLOR="Red"], vbInformation[/COLOR]
Şöyle ses vermemesi lazım.
Kod:
MsgBox "KAYIT YAPILDI"

Daha olmazsa bunu silerek; yerine aşağıdaki gibi deneyelim.
Kod:
CreateObject("WScript.Shell").Popup "KAYIT YAPILDI", , "OKULUMUZ"

Yok hocam çözülmedi . Sanırım XP ile alakalı bir şey bu.Hazır yakalamışken bir soru daha. İzinli olan hocaları nasıl yansıtabiliriz sisteme. Mesela hocalar değişik günlerde izinde , bunu rapora giriş yapsak otomatik olarak işlermi. Mesela Pazar günü X ve Y kişileri izinli yazsa. Pazartesi Z kişisi gibi ? Mümkün müdür böyle bir şey ?
 
Yok hocam çözülmedi . Sanırım XP ile alakalı bir şey bu.Hazır yakalamışken bir soru daha. İzinli olan hocaları nasıl yansıtabiliriz sisteme. Mesela hocalar değişik günlerde izinde , bunu rapora giriş yapsak otomatik olarak işlermi. Mesela Pazar günü X ve Y kişileri izinli yazsa. Pazartesi Z kişisi gibi ? Mümkün müdür böyle bir şey ?
Tam anlayamadım ama; anladığım gibi ise raporda isminin karşısı boş kalanlara izinli yazılabilir;
veya bir sayfaya izin tablosu yapmak lazım ki baksın rapor sayfasına eklesin, tasarlayında yapmaya çalışalım.
 
Tam anlayamadım ama; anladığım gibi ise raporda isminin karşısı boş kalanlara izinli yazılabilir;
veya bir sayfaya izin tablosu yapmak lazım ki baksın rapor sayfasına eklesin, tasarlayında yapmaya çalışalım.

Üstat şimdi rapor sayfasının yanına izinler diye sayfa açtım .Hangi öğretmenin hangi gün izinli olduğunu oraya yazsak. Rapor ve kayıt sistemi o izinler sayfası üzerinden okuma imkanı var mı ?

http://www.dosya.tc/server7/hdhvx0/GIRIS-CIKIS.xls.html
 
Tam anlayamadım ama; anladığım gibi ise raporda isminin karşısı boş kalanlara izinli yazılabilir;
veya bir sayfaya izin tablosu yapmak lazım ki baksın rapor sayfasına eklesin, tasarlayında yapmaya çalışalım.

Bakabildin mi üstat ?
 
Geri
Üst