Kolay saat yazma

ÆSir

Dora
Altın Üye
Katılım
15 Ocak 2018
Mesajlar
222
Excel Vers. ve Dili
2015 TR
Altın Üyelik Bitiş Tarihi
20-05-2025
merhaba

tabloda biçim kategorisinden saat seçip hücreye saat yazmak istediğimde 17:00 yazmak zorundayım Bunu kolaylık olması için 17,00 veya 1700 yazdığımda bunu otomatik 17:00 yapabileceğim bir yöntem var mı?
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,698
Excel Vers. ve Dili
Microsoft 365 Tr-64
İlgili sütunun Biçimini Hücre Biçimlendirmeden "ss:dd" yapın
Sayfanın kod bölümüne aşağıdakini yapıştırın. Ben "B" sütunu için yazdım. Siz kendinize göre uyarlarsınız.
C++:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    Target = TimeSerial(Int(Target), 100 * (Target - Int(Target)), 0)
    Application.EnableEvents = True
End Sub
B2 ye 12,55 yazınca 12:55 olarak düzeltir
B2 ye 12,65 yazınca 12:65 olamayacağı için 13:05 olarak düzeltir.
Umarım istediğiniz budur.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,257
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Ben de bir şeyler karalamıştım. Ben de A sütunu için yazmıştım.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, [A:A]) Is Nothing Then Exit Sub

If IsNumeric(Target.Value) Then
    Application.EnableEvents = False
    Target.Value = TimeSerial(Int(Target.Value / 100), Target.Value Mod 100, 0)
    Application.EnableEvents = True
End If

End Sub
 

ÆSir

Dora
Altın Üye
Katılım
15 Ocak 2018
Mesajlar
222
Excel Vers. ve Dili
2015 TR
Altın Üyelik Bitiş Tarihi
20-05-2025
İlgili sütunun Biçimini Hücre Biçimlendirmeden "ss:dd" yapın
Sayfanın kod bölümüne aşağıdakini yapıştırın. Ben "B" sütunu için yazdım. Siz kendinize göre uyarlarsınız.
C++:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    Target = TimeSerial(Int(Target), 100 * (Target - Int(Target)), 0)
    Application.EnableEvents = True
End Sub
B2 ye 12,55 yazınca 12:55 olarak düzeltir
B2 ye 12,65 yazınca 12:65 olamayacağı için 13:05 olarak düzeltir.
Umarım istediğiniz budur.
Teşekkür ederim elinize sağlık. B:B yerine B:D yaptım 3 sütunda da işe yarıyor. Bir sorun var gibi tam çözemedim ona bakacağım.

Merhaba,
Ben de bir şeyler karalamıştım. Ben de A sütunu için yazmıştım.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, [A:A]) Is Nothing Then Exit Sub

If IsNumeric(Target.Value) Then
    Application.EnableEvents = False
    Target.Value = TimeSerial(Int(Target.Value / 100), Target.Value Mod 100, 0)
    Application.EnableEvents = True
End If

End Sub
Hocam sizlerin yaptığı karalamak ise biz ne yapıyoruz acaba? Harikalar yaratmakta üzerinize yok. Ellerine sağlık hepinizin.
 
Katılım
2 Nisan 2008
Mesajlar
76
Excel Vers. ve Dili
2003 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25.05.2019
Selamlar
Her iki kodu da denedim 1230 yazıyorum 00:00 çıkıyor
acaba 12:30 yazmayacak mı
nerede hata yaptım anlamadım
kodları tek tek denedim
ss:dd da yaptım ?
 

ccuneyt13

Altın Üye
Katılım
20 Ocak 2011
Mesajlar
272
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
01-11-2026
Selamlar
Her iki kodu da denedim 1230 yazıyorum 00:00 çıkıyor
acaba 12:30 yazmayacak mı
nerede hata yaptım anlamadım
kodları tek tek denedim
ss:dd da yaptım ?
Bende yapamadım :)
12,55 yazıyorum 13:12 yapıyor, beceremedim
 

DoğanD

Altın Üye
Katılım
22 Eylül 2023
Mesajlar
413
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
05-10-2028
@ÖmerFaruk Bey'in kodunda B sütunu biçimini Saat yapıp, veriyi 11,22 şeklinde arada virgül ile girmelisiniz.
@Necdet Bey'in kodunda da A sütunu biçimini yine Saat yapıp, veriyi 1122 şeklinde yapışık biçimde girmelisiniz.

Bende her iki kod da sorunsuz çalışıyor, tekrar emeğinize sağlık.
 

ccuneyt13

Altın Üye
Katılım
20 Ocak 2011
Mesajlar
272
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
01-11-2026
@DoğanD Bey teşekkürler açıklama için. Başardım :)

@mavi674 ben yaptım sanırım bende ki sorun kodları modüle koyup çalıştırmatı. Sayfa1 içine yazınca kodları çalıştı.
Sizde hangi sayfada deniyorsanız o sayfaya yazın kodu belki sorun aynıdır.

Herkese teşekkürler, faydalı bir bilgi daha kazandık.
 
Son düzenleme:

ÆSir

Dora
Altın Üye
Katılım
15 Ocak 2018
Mesajlar
222
Excel Vers. ve Dili
2015 TR
Altın Üyelik Bitiş Tarihi
20-05-2025
Ben bu kodu neden kaydedemiyorum? Tablo çok güzel çalışıyor. Aç
Merhaba,
Ben de bir şeyler karalamıştım. Ben de A sütunu için yazmıştım.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, [A:A]) Is Nothing Then Exit Sub

If IsNumeric(Target.Value) Then
    Application.EnableEvents = False
    Target.Value = TimeSerial(Int(Target.Value / 100), Target.Value Mod 100, 0)
    Application.EnableEvents = True
End If

End Sub
Hocam 3lü vardiya için eğer personel 23:00 giriş- 07:00 çıkış olacak şekilde yapmak istersek ne eklememiz gerekir? 00.00 ile 23.50 arası çalışıyor.
 

Ekli dosyalar

Katılım
2 Nisan 2008
Mesajlar
76
Excel Vers. ve Dili
2003 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25.05.2019
ccuneyt13 Teşekkürler
ÖmerFaruk beyin kodu 12,30 da 12:30 oldu ama
Necdet beyin kodunda ise 12,30 yazına 07:30 çıkıyor.
Bir de bunu virgülsüz girmenin yolu yok mu
1230 yazınca 12:30 olsa saha pratik olacak...

Herkese Teşekkülerrrr
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,257
Excel Vers. ve Dili
Ofis 365 Türkçe
benim verdiğim kodlarda 12,30 değil 1230 yazacaksınız
 
Katılım
2 Nisan 2008
Mesajlar
76
Excel Vers. ve Dili
2003 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25.05.2019
Çok özür dilerim Necdet bey,
benim istediğimi zaten siz yapmışsınız. ben yanlış yapmışım.
Lütfen özürümü kabul edin ve Teşekkürlerlml sunuyorum.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,257
Excel Vers. ve Dili
Ofis 365 Türkçe
Rica ederim, özür ne demek_?
olur böyle şeyler, sonuçta yazışarak konuşuyoruz :)
 

ÆSir

Dora
Altın Üye
Katılım
15 Ocak 2018
Mesajlar
222
Excel Vers. ve Dili
2015 TR
Altın Üyelik Bitiş Tarihi
20-05-2025
Ben bu kodu komple B : D olarak kullanmak yerine;

C4 ile G42 arasında ve K4 ile O42 arasındaki hücrelere uygulamak istesem C4:G42;K4:O42 olarak mı yazmalıyım
If Intersect(Target, [C:E]) Is Nothing Then Exit Sub
bölgesine.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,257
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Kodları kendinize uyarlayınız.
Kod:
If Intersect(Target, [B3:B7,F6:I8,K9:M12]) Is Nothing Then Exit Sub
yada
Kod:
If Intersect(Target, Range("B3:B7,F6:I8,K9:M12")) Is Nothing Then Exit Sub
Not : Aralık makro kaydet ile alınarak uyarlanmıştır. Bunu siz de yapabilirsiniz.
 
Son düzenleme:
Üst