Çözüldü Tarih Hareketli Saat İkisinin Bileşkesini Alma

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

hakki83

Site Üyesi
Excel Versiyonu
Excel 2016
Excel Sürümü
32 Bit
Excel Dili
Türkçe
Değerli hocalarımız iyi günler.

Konuyu arz edeyim:

Örnek dosyada A sütununda ;

A2'den itibaren A10.000'e kadar tarihler vardır.

Birinci satırda ise B1'den AP1'e kadar 15'er dakikalık dilimlere bölünmüş saatler vardır.

Bu örnek dosya ile ilgili taleplerim şunlardır:


Tarih sütunuyla ilgili olması gereken şu ;
O gün hangi tarihteysek, günün tarihi olan o tarih, yani o satır ;
her yeni günün başlangıcında (00:00) , en üst satırın bir altına kayacak. Yani Scroll işlemi.

Diyelim ki şu an 15.09.2023 tarihindeyiz,
15.09.2023 tarihi, sanki ikinci satırmış gibi yukarıya kayacak.

Tıpkı örnek dosyadaki gibi.
................................

Saat sütunlarıyla ilgili olması gereken de şu:
O an hangi saat dilimindeysek, içinde olduğumuz o saat dilimi, yani o sütun ;
15 dakikada bir , tarih sütununun hemen yanına kayacak. Yine Scroll işlemi.


Diyelim ki şu an saat 11:19,
11:15'lik saat dilimi, sanki B sütunuymuş gibi sola kayacak.

Tıpkı örnek dosyadaki gibi.
...................

Otomatik seçilmesi gereken hücre de ; her zaman, tarih satırıyla saat sütunun bileşkesi olan hücre olacak.


Tıpkı örnek dosyada göründüğü gibi.

...................

Saat dilimlerinin nasıl olması gerektiğini de net olarak yazayım.

11:00 - 11:14 arası = 11:00 lık dilimin üzerinde
11:15 - 11:29 arası = 11:15 lik dilimin üzerinde
11:30 - 11:44 arası = 11:30 luk dilimin üzerinde

11:45 - 11:59 arası = 11:45 lik dilimin üzerinde

olmalıdır.

.......................


Bu dosyayla ilgili ihtiyacım olan şu an için yalnızca bir mesajdır.

Eğer dosya,
sabah 8'den önce ;
veya
akşam 18:00'dan sonra açılırsa

"Mesai Saatleri Dışındayız" uyarısı verecek.
............

Eğer bu mesaj kutusu, bir değil de iki adet mesaj kutusu ile yapılabiliyor ise, öyle de olabilir, hiçbir mahsuru yoktur.
Yani ;

Saat 18:00 ile 00:00 arası birinci MsgBox

Saat 00:00 ile saat 08:00 arası ikinci MsgBox

olması gerekiyorsa, olur. Hiç mahsuru yoktur.

.......................

Yazdıklarımın dışında başka bir mesaj veya başka bir özelliğe, şu an için gerek yoktur.

.......................

Herhangi bir biçimlendirme, dolgu, font, çerçeve, vs. olmamalıdır.

Activate veya SelectionChange olayı kulanılabilir.

Şimdiden teşekkürlerimi sunarım.

Şunu da belirtmeliyim. ,
Belki ileriki zamanlarda,
15 dakikalık dilimleri, 8 dakikaya düşüreceğim.
Ya da belki
20 dakikaya çıkartacağım.
Ama şu an için 15 dakika..
.......................

Aynı dosyayla ilgili daha sonra farklı bir talebim daha olacak. Sonra başka konu açacağım.

Saygılar..
 

Ekli dosyalar

Çözüm
@hakki83

İsteğin kritik noktası "15 dakikada 1 sağa kayacak" kısmı.
İşlemin otomatik gerçekleşmesi için mevcut saatin sürekli kontrol edilmesi anlamına geliyor ve bunun sonucu da sürekli olarak bir makronun çalışıyor olması demektir.

Bence doğrusu; açılışta (workbook_open olayına) ve
-- hücrelere veri girildikçe (Worksheet_Change)
-- ya da hücre seçimi değiştikçe (Worksheet_SelectionChange)
kontrol yaptırmak.

Şu kod içeriğini,
-- bir kez Workbook_open olayı içerisine,
-- bir kez de tercihe göre change veya selectionChange olayı içerisine
ekleyin.
İsteğinize göre MsgBox içeriklerini değiştirin, Exit Sub yerine belki de dosyanın kapanmasını isteyeceksiniz ona göre değiştirirsiniz.

VBA:
İçeriği görüntülemek için giriş yapmalısınız
(1 satır)
Değerli hocalarımızın yardımlarını bekliyorum. 🙏 :love:

Tarih = Günün tarihine kayacak, (bir alt satıra)
Saat dilimi = 15 dakikada bir sağ tarafa kayacak, (saat dilimine)
Seçili hücre = ikisinin birleşim hücresi olacak, (yani seçili hücre de hareketli olacak)
Mesaj = saat 8'den önce ve saat 18'den sonra dosya açılırsa, uyarı mesajı verecek.
 
@hakki83

İsteğin kritik noktası "15 dakikada 1 sağa kayacak" kısmı.
İşlemin otomatik gerçekleşmesi için mevcut saatin sürekli kontrol edilmesi anlamına geliyor ve bunun sonucu da sürekli olarak bir makronun çalışıyor olması demektir.

Bence doğrusu; açılışta (workbook_open olayına) ve
-- hücrelere veri girildikçe (Worksheet_Change)
-- ya da hücre seçimi değiştikçe (Worksheet_SelectionChange)
kontrol yaptırmak.

Şu kod içeriğini,
-- bir kez Workbook_open olayı içerisine,
-- bir kez de tercihe göre change veya selectionChange olayı içerisine
ekleyin.
İsteğinize göre MsgBox içeriklerini değiştirin, Exit Sub yerine belki de dosyanın kapanmasını isteyeceksiniz ona göre değiştirirsiniz.

VBA:
İçeriği görüntülemek için giriş yapmalısınız
(41 satır)
 
Çözüm
Ömer hocam çok teşekkür ederim emeğinize bilginize sağlık.

Şu an için hiçbir sorun yok görünüyor. Tabi günlerce denemeler yapacağım.

İşlemin otomatik gerçekleşmesi için mevcut saatin sürekli kontrol edilmesi anlamına geliyor
Yok Ömer hocam, kodların sürekli çalışmasına hiç gerek yok.
WorkSheetActivate ile çalışsa bile olur.
Yani saatin her an kontrol edilmesine hiç gerek yok.

Bu arada SelectionChange ile denedim olmadı, çünkü bu sefer seçili hücre, hep aynı noktada kalıyor, hiç veri giremiyorsunuz haliyle (işin bu kısmını ben de düşünememiştim.)
Activate ile oldu.




selectionChange olayı içerisine
ActivateSheet olmuştur Ömer hocam.



MsgBox içeriklerini değiştirin, Exit Sub yerine belki de dosyanın kapanmasını
Mesajlar da tamamdır hocam. Hiç sorun yoktur.

Sadece birkaç gün deneyeyim.
...............................

Yalnız Ömer hocam bir istekte bulunabilirim.

Hani "günün tarihi yok" mesajı eklemişsiniz ya,
Hazır eliniz değmişken,
Hani saat diliminin altında hücre seçiliyor ya,
işte o anki saat dilimi eğer silinmiş veya bozuk ise,
"saat dilimi bulunamadı" mesajını da ekler misiniz
Ama sadece anlık saat dilimi için.
Diğer saat dilimleri silinmiş olsa bile, vakti gelmeden herhangi bir mesaj çıkmamalı.


Emeğinize bilginize sağlık Ömer hocamız.
 
Koddaki şu kısım zaten SAAT kontrolü için idi ve
sadece mesai saati dışı durumunu değil,
ilgili saatin birinci satırda olmaması seçeneğini de içeriyor.

Sadece mesaj metnini değiştirmenizin yeterli olması gerekir.

Belgeyi şu an deniyorsanız, 11:15 saatinin olduğu hücre içeriğini SİLİN veya değiştirin.
Kodu activate kod bloku içine almışsanız, ya başka bir sayfaya geçip tekrar bu sayfaya dönerek ya da
belgeyi kaydedip kapatın ve tekrar açın.
İlgili saat olmadığı için mesaj ekrana gelecektir.

VBA:
İçeriği görüntülemek için giriş yapmalısınız
(4 satır)
 
Hocam ekledim fakat bu sefer de saatleri bulamıyor,
ve saatlerin hepsi tam (eksiksiz) olmasına rağmen,
mesaj çıkıyor

(saatleri bulamadığı için zaten sütunsal olarak hareket etmiyor.)
(satırı eklemeden önce tarihsel ve saatsel hareketlerde hiç sorun yoktu)
 
Değerli hocam sağ olunuz, bir şey dışında olmuş görünüyor.

Eğer dosyayı sabah saat 08:00'dan önce açarsak hata veriyor.

Bunu da düzeltebilirsek tamamdır.
 
Kodu tekrar güncelledim. Sayfayı yenileyerek tekrar kontrol edin.

-- B1 boş/metin
-- Kodda belirtilecek ritme (15) ve B1'deki saate göre ilgili sütun değeri doğru/değil,
-- mesai saatleri dışı (önce veya sonra)
kontrollerinin tamam olması lazım.

Denersiniz.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Konuyu başlatan
Site Üyesi
Katılım
Konu Bilgi
Durum
Çözüldü 
Forum
Excel Makro Soruları
Başlangıç tarihi
Son yanıt tarihi
Cevaplar
11
Üst