• DİKKAT

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

Zamanla ilişkilendirilmiş sayı toplama

Katılım
17 Aralık 2010
Mesajlar
12
Excel Vers. ve Dili
2002
Bir proje için excel de zaman fonksiyorunu kullanmam lazım. Kısaca tuşa basıldığında her saniye hücreye belirlenmiş bir sayıyı eklemesini istiyorum. Ve bunu aynı şekilde belirlenmiş bir saatte kendi başına otomatik olarak yapmasını da ayarlamaya calışıyorum. Her saniye kontrol yapması gerekeceğinden çok kaynak kullanır mı bunu da bilemiyorum. Acemi olduğumdan şu an için bunlar bana fazla geldi, yardım edebilirseniz sevinirim.
 
Son düzenleme:
Selamlar,

Forumumuza hoşgeldiniz. Aşağıdaki kodları boş bir modüle ekleyip denermisiniz.

Kodlar dosya açılışında otomatik çalışır. Dilerseniz küçük bir değişiklik ile butona bağlayıp kullanabilirsiniz.

Kod:
Option Explicit
 
Sub AUTO_OPEN()
    DoEvents
    Sheets("Sayfa1").Select
    Application.OnTime Now + TimeValue("00:00:01"), "EKLE"
End Sub
 
Sub EKLE()
    DoEvents
    Range("A1") = Range("A1") + 5
    AUTO_OPEN
End Sub
 
Üstat ilginiz için teşekkür ediyorum. Hoşbulduk. Pascalla ve delphi ile zamanında uğrasmıştığımdan (uzun zaman once) basic i pas gecmiştim ama bu excel in içinde zahmetsizce kullanım cok cekici geldi.

Sayenizde DoEvents in kullanımına bakmam gerektiğini ogrendim (kesinlikle öğrenilmesi gereken bir fonksiyonmuş) ancak hala buttona aktaramadım. Bunun yanında zamanla ilişkilendirmek için özellikle fazla kaynak kullanmayacak bir oneriniz olursa mutlu olurum. AUTO_OPEN subroutinini duğmeye ekledikten sonra başka bir düğmeye (yazılan saati kaydeden tuşa) basit bir eğer dongusu kursam bu her saniye kontrol ediyorsa programı yavaşlatır mı
 
Son düzenleme:
Selamlar,

Sürekli zaman kontrolü işlemcinize bir miktarda olsa yük bindirecektir. Siz örnek bir dosya ekleyerek tam olarak ne yapmak istediğinizi açıklarsanız belki alternatif çözümler üretebiliriz.
 
Kısaca kullanıcının gireceği zamanı kontrol edip sistem saati o zamana geldiğinde başka bir sayfadaki degeri seçime gore +1 veya +2 arttırması gerekiyor.
 
Selamlar,

Ben açıklamanızdan maalesef çok fazla birşey anlamadım. Kullanıcı nereye ne girecek?
 
Ben açıklayıcı olamadım sanırım. Amacım bir tür zamanlanmış gorev tanımlamak. Bunun için ekleyeceğim bir textbox a kullanıcı tarafından girilen zamanda programın çalışmasını sağlamak. Kullanıcı textbox a zamanı girip onay düğmesine basınca kontrole başlamasını, zaman geldiginde de kitap1 içindeki hücre A1 deki sayıyı, secenek düğmesi1 aktifse +1, SD2 aktifse +2 arttırmasını amaçlıyorum.
 
Selamlar,

Konuyla ilgili örnek dosya eklermisiniz.
 
Üstat örnekte artışı zamanla ilişkilendirip ekleyecek kadar ( Doevent döngüsü ile yapmak fonksiyonel olacak sanırım) bilgim yok henuz. Bu yüzden forumda zamanla bağlantılı ornekleri aradım. Sn. Levent Menteşoğlunun 2005'deki bir orneğinden fikir alabileceğimi düşündüm ama ekler ne yazık ki silinmiş ve bu yüzden de kendisi bir başlık açıp sizlerden tavsiye alabileceğimi söyledi. Projenin ana/zorlayıcı kısmı zamanlama kontrolu olacak diye düşünüyorum. Dolayısı ile ara yüzü de bunun üzerine kuracağım. Textbox a, hücreye isim verme işini sadece daha spesifik anlatım için uyguladım.
 
Selamlar,

Ekteki örnek dosyayı incelermisiniz.

Test etmek için formu açtıktan sonra yakın bir saat yazın ve ONAY tuşuna basıp bekleyin.
 

Ekli dosyalar

yeni

Üstat üzerinde biraz uğraştım ve çalışamaz hale gelmesini sağladım. :redface:

Eklediklerim Limit kontrol adında 100 e ulaştığı zaman durmasını sağlayacak bir sub. Çalışmamaya başlamadan önceki en onemli sorunum ise EKLE sub ının if koşulunu (zamanın geldiğinin kontrolu) sağlanmasa da kullanılmaya başlanması
 

Ekli dosyalar

Selamlar,

Aşağıdaki kodu denermisiniz.

Kod:
Option Explicit
 
Sub Düğme1_Tıklat()
    MsgBox "Zamanı lütfen saat formatında giriniz !", vbCritical
    UserForm1.Show 0
End Sub
 
Sub ONAY()
    DoEvents
    Application.OnTime Now + TimeValue("00:00:01"), "TEST"
End Sub
 
Sub TEST()
    If Sheets("Sayfa1").Range("A1") >= 100 Then
        MsgBox "İşleminiz durdurulmuştur !", vbExclamation
        End
    End If
    
    If Time = CDate(UserForm1.TextBox1) Then
        MsgBox "Bu uyarıyı aldıysanız program sağlıklı çalışmaktadır.", vbInformation
        If UserForm1.OptionButton1 = True Then Sheets("Sayfa1").Range("A1") = Sheets("Sayfa1").Range("A1") + 1
        If UserForm1.OptionButton2 = True Then Sheets("Sayfa1").Range("A1") = Sheets("Sayfa1").Range("A1") + 2
    Else
        ONAY
    End If
End Sub
 
Teşekkür ediyorum üstat

Denedim ancak zamanla artışı yapamıyor. 1 kere arttırıyor sonra duruyor. Ayrıca değer 99 sa 2 li artış seçilmişse değer 101 oluyor. Onu hemen altındaki satıra 101 i 100 yap desemde telafi ederim sanırım o kadar sorun yaratmaz (kafamda 2 tane template ile bu artışları gostermek var ve orada sınır 100 ama sanırım sorun olmaz)
 
If Time = CDate(UserForm1.TextBox1) Then
MsgBox "Bu uyarıyı aldıysanız program sağlıklı çalışmaktadır.", vbInformation
If UserForm1.OptionButton1 = True Then Sheets("Sayfa1").Range("A1") = Sheets("Sayfa1").Range("A1") + 1
If UserForm1.OptionButton2 = True Then Sheets("Sayfa1").Range("A1") = Sheets("Sayfa1").Range("A1") + 2

arttırım eğer saat girilen zamana denkse işleniyor ve bu nedenle Else i yani zamanla arttırımı işlememmiş oluyor.
 
Selamlar,

Yazdıklarınızdan şu sonuca vardım;

Kullanıcı bir kutuya işlem saati girecek.
ONAY butonuna basıp işlemi başlatacak.
Belirlenen zaman geldiğinde A1 hücresindeki değer seçime göre 1 ya da 2 artacak.
A1 hücresi 100 limitine ulaştığında işlem otomatik olarak duracak.

Eğer yazdıklarım doğru ise bu dosyanın sürekli açık olması gerekiyor. Çünkü son mesajınızda değer arttırımı bir kez oluyor diye belirtmişsiniz. Değer arttırımının devam etmesi için gün atlaması olması gerekirki aynı zaman tekrar kontrol edilebilsin.
 
Evet aynen oyle. Belirtilen zaman geldiğinde artış başlayacak, her saniye 1 veya 2 arttırıp 100 e ulaşınca artırımı durduruyor. Programı durdurması gerekmiyor , hatta aynı sayfaya dönüp kullanıcıya bir mesaj vermesi yada bulacağim ampul gibi bir resmin yeşile donmesi gibi bir bildirim verecek. Normalde gün de girilmesi gerekir elbette ama su an için saatli yapmaya çalışıyorum.

Kendi düzenlememde;
If Time = CDate(UserForm1.TextBox1) Then

bu satırda hata veriyor ve o yuzden calışmıyordu. Gerci arttır sub ının dışarda bırakmışım, eski versiyonu eklemişim yanlışlıkla. Düzenleyip yeniden yapıstıracam

Application.OnTime Now + TimeValue("00:00:01"), "TEST" Bu satırın gerçekleştiği sistem saatinin 1 sn sonrsında test e gitmesi yanlış anlamadım değil mi.
 
Son düzenleme:
Bu arada saniyede bir veya 2 artış şekli yerine saniyeden bağımsız ama çok hızlı olmayacak şekilde yapmanın (bir tür geciktirme) bir yolu var mı
 
Selamlar,

Aşağıdaki kodları denermisiniz. Umarım bu sefer istediğiniz şekilde olmuştur.

Kod:
Option Explicit
 
Sub Düğme1_Tıklat()
    MsgBox "Zamanı lütfen saat formatında giriniz !", vbCritical
    UserForm1.Show 0
End Sub
 
Sub ONAY()
    DoEvents
    Application.OnTime Now + TimeValue("00:00:01"), "TEST"
End Sub
 
Sub TEST()
    If Sheets("Sayfa1").Range("A1") >= 100 Then
        MsgBox "İşleminiz durdurulmuştur !", vbExclamation
        End
    End If
    
    If Time >= CDate(UserForm1.TextBox1) Then
        If UserForm1.OptionButton1 = True Then Sheets("Sayfa1").Range("A1") = Sheets("Sayfa1").Range("A1") + 1
        If UserForm1.OptionButton2 = True Then Sheets("Sayfa1").Range("A1") = Sheets("Sayfa1").Range("A1") + 2
        If Sheets("Sayfa1").Range("A1") > 100 Then Sheets("Sayfa1").Range("A1") = 100
        ONAY
    Else
        ONAY
    End If
End Sub
 
Üstat elinize sağlık tam olarak buydu bahsettiğim. Şimdi diğerlerini üzerine kuracağım. Bu arada kaplama , ampul, vida gibi tasarımda kullanacağım malzemelerle ilgili önerebileceğiniz bir link var mı. Bir tane metal zemin kaplaması buldum "brushed-metal-texture-thumb253416" diye aratırsanız karşınıza çıkıyor (link veremiyorum galiba) . Bunun gibi birkaç jpeg daha bulabilirsem gorselliği de arttırmış olurum, çok şik duruyor
 
Son düzenleme:
Selamlar,

Sakıncalı değilse link paylaşabilirsiniz.
 
Geri
Üst