userformu sıçratan saniyeli saati dakikaya düşürmek

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,486
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
Bir arkadaşın iş ihtiyacını kolaylaştırmak amacı ile hazırladığım programda , 19 adet makinanın 2-3 günden 8 saate kadar değişen ve rulo halinde takılan hammaddelerinin herbirinin ayrı ayrı tüketme zamanlamasını görmesi amacı ile userform üzerinde bir label'e saat uygulaması yerleştirdim ve :

1-userform_initialize() altına

Me.Label17 = Time
Application.OnTime Time + TimeValue("00:00:01"), "Live_time"

2-Modul1 altına

Sub Live_time()
Application.OnTime Time + TimeValue("00:00:01"), "Live_time"
UserForm1.Label17 = Time
UserForm1.Repaint
End Sub

3- Form kapandığında saatin de durması için userform1 i kapat tuşunun altına

Private Sub CommandButton4_Click()
Application.DisplayAlerts = False
Application.OnTime Time + TimeValue("00:00:01"), "Live_time", , False
ThisWorkbook.Save
Unload Me
End Sub

Yerleştirdim. Label17.caption olarak birşey yapmadım . Burada iki problem çıkıyor:

1- Saniye atımı label olduğu için formu sıçratıyor. Saatin saniye atması yerine dakika atması için nasıl bir değişiklik yapmalıyım ?

2- Tükenmeleri her makinanın malzemesi için dakikada ya da saatte bir exceli tetikleyerek ve yeniden hesaplatarak ( calculate işe yaramadı ) ve daha sonra userformu da tetikleyerek form uzerinde gorulmesini nasıl sağlarım?

Excel tablosunda bağımsız değişken olarak aldığım (soldan sağa ) 11 adet veri ve zamanlamaları kullanarak 10 adet bunların formüllerle hesaplanması ile gelen bağımlı değişkenler hazırladım. Userform bağımlı değişkenlerden bazılarını " bul " tuşu ile formda olan textboxlara taşıyor ve bunu (yukarıdan aşağı )19 makina için ayrı ayrı yapıyor ve 204 textbox üzerine düzgünce çekiyor.

Tetiklemeden kasdım , dakika ya da saat değiştiğinde bu excel tablosunu ve peşinden formu tetikleyerek hesaplatmak ve görünürleştirmek.

Programı dosya.tc üzerinden gönderebilirim ki en sağlıklısı bu olur, ancak endüstriyel ayrıntı olduğu , bana ait olmadığı nedeni ile kendisini ve içini değiştirince anlamsızlaştığı için benzerini yüklemekte kararsızım . Yine de (değiştir-kaydet kısmında) ek problemleri de var , onu da bu şekilde sormam gerekecek.

Belki Yöneticiler bir yol önerebilir ya da burada elden gelen en açık dille anlatmaya çalıştığımla bir cevap üretmeye çalışırlar.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,245
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Aşağıdaki gibi deneyiniz.

Kod:
Application.OnTime Time + TimeValue("00:01:00"), "Live_time"
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,486
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
..Private Sub CommandButton4_Click() ' formu kapat
..On Error Resume Next
..Application.DisplayAlerts = False
->Application.OnTime Time + TimeValue("00:01:00"), "Live_time", , False
..ThisWorkbook.Save
..Unload Me
--End Sub

Form sakinleşti ve dakikada bir ufak bir sıçrama ile saati çalıştırdı. Ancak -> ile gösterdiğim satırda hata verdi ve sarıya boyadı. Kodun üstüne " on error resume next " yerleştirip bekledim ve bir kaç kere kapatıp açtım , sorun çıkarmadı.

Umarım bu doğru fikirdir ...Şimdilik sorunu aştığımı düşünüyorum .

Sorumda 2ci kısım olan tetikleme ( userformdan excelin herhangi bir satırına bağımsız değişkenleri atarken kaydet tuşuna basarken ) çalıştırmak ve userformda değişikliği görmek ( kapatıp açmaya ya da o makinanın datasını yeniden bul işlemine sokmadan mümkün mü ?

Bir örnek yüklüyorum , bunda değiştir ve kaydet kodu hasarlı ya da kaçırdığım bir şeyler var

http://s6.dosya.tc/server7/qcn237/textbox_islemleri.rar.html

Bundaki amaç bağımsız değişkenleri değil , bunlar ve zaman ile hesaplanan 22 textboxta değişimi görebilmek
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,245
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Değiştirme işleminde ne değişecek?
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,486
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
sol baştaki makina no (1,2,3,4) ile gelen verilerin üzerinde değişiklk yapılabiliyor. Mesela gonderdiğim formda 1 nolu makina için bul tuşuna basıldığında 30 geliyor. Bu form üzerinde 33 yada 36 ya da 41 ya da başka sayı olabiliyor. Diğer gelen verilerden 790 yerine 890 veya 7203 yerine 7400 yazılabiliyor.

Bu değiştirilme sonunda excele kaydedilmesi gerek ( su an gece yorgunluğunda kodları karıştı) .

Excele bu yeni hali ile kaydedildiğinde sayfada orneğin etkilenen F4 hucresinde 36*7400 sonucu çıkıyor. Bu sonucun userformda ( soldan itibaren ) 6cı textbox unda görülmesi ve ( aslında hammadde tukeniste olduğundan ) dakika ya da saate duyarlı olarak hem excelde hem userformda gorunmesi mumkun mu ?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,245
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Çalışmanızın detaylarını siz biliyorsunuz. Ben sizin yönlendirmenize göre kod yazabilirim. Fakat açıklamalarınız yetersiz kalmış. Anladığım kadarıyla verilerle matematiksel işlemler yapıyorsunuz. Bunları açıklamazsanız yazacağımız kodlar havada kalacaktır.

Aşağıdaki kodlar ile kayıt bulma ve sayfaya kayıt etme işlemlerini yapabilirsiniz. Kendinize göre uyarlaması size kalmış.

Kod:
Private Sub CommandButton1_Click()
    ActiveCell.Offset(0, 1) = TextBox2
    ActiveCell.Offset(0, 2) = TextBox3
    ActiveCell.Offset(0, 3) = TextBox4
    ActiveCell.Offset(0, 4) = TextBox5
    ActiveCell.Offset(0, 5) = TextBox6
    ActiveCell.Offset(0, 6) = TextBox7
    ActiveCell.Offset(0, 7) = TextBox8
    ActiveCell.Offset(0, 8) = TextBox9
    
    MsgBox "Kayıt işlemi tamamlanmıştır."
End Sub

Private Sub CommandButton2_Click()
    Dim S1 As Worksheet, Bul As Range, X As Byte
    
    Set S1 = Sheets("Sayfa1")
    S1.Select
    Set Bul = S1.Range("A:A").Find(TextBox1, , , xlWhole)
    If Not Bul Is Nothing Then
        Bul.Select
        For X = 2 To 9
            Controls("TextBox" & X) = Replace(Bul.Offset(0, X - 1), ".", ",")
        Next
    Else
        MsgBox "Aranan kayıt bulunamadı!", vbCritical
    End If
End Sub
 
Üst