• DİKKAT

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

Userform Alt alta veri kayıt

Katılım
24 Mayıs 2017
Mesajlar
13
Excel Vers. ve Dili
2016 tr
Merhabalar
Hazırlamış olduğum Şantiye mesai kayıt programında Userform üzerinden veri kayıt programı yapmaya çalıştım. Burda Textbox ve Combobox veri kayıtlarını sayfada hücrelere alt alta sıralı şekilde nasıl kaydedebilirim. Bir başlangıç yapmaya çalıştım fakat beceremedim. Yardımcı olursanız sevinirim. Dosya ektedir.
 

Ekli dosyalar

Gayet de güzel ve işgörebilecek bir başlangıç olmuş, baya uğraşmışsınız. Font iriliği dışında çok bir sorun görünmüyor ama ince detayda tam olarak sorun ne tarif eder misiniz ?

Bir de hava durumunun alakası ve yeri ne _?
 
Kodlarınız aşağıdaki şekilde değiştirip deneyin.
Kod:
Private Sub CommandButton1_Click() 'KAYDET BUTONU
Sheets("ŞANTİYE_MESAİ").Select

With Sheets("ŞANTİYE_MESAİ")

 For x = 2 To 33 Step 2
If Me.Controls("ComboBox" & x).Text <> "" Then
satır = Range("A65536").End(3).Row + 1
    If Cells(satır, 2) <> "" Then
        Cells(satır, 1) = satır - 1
    Else
        
     
        Cells(satır, 1) = satır - 1
        Cells(satır, 2) = CDate(TextBox1.Text) 'Tarih
        Cells(satır, 3) = ComboBox1.Text 'Hava Durumu
        
        Cells(satır, 4) = Me.Controls("ComboBox" & x).Text 'Personel Adı
        Cells(satır, 5) = Me.Controls("ComboBox" & x + 1).Text 'Proje
        Cells(satır, 6) = Format(Me.Controls("TextBox" & x).Value, "hh:mm") 'Başlama Saati
        Cells(satır, 7) = Format(Me.Controls("TextBox" & x + 1).Value, "hh:mm") 'Bitiş Saati
        Cells(satır, 9) = Me.Controls("TextBox" & x + 99).Text 'Açıklama
        Cells(satır, 17) = Environ("username") & " - " & Format(Now, "dd.mm.yyyy hh.mm.ss")
    End If
End If
Next
End With
'
'    With Sheets("ŞANTİYE_MESAİ")
'
' Cells(satır, 2) = ComboBox4.Text 'Tarih
'        If Cells(satır, 2) <> "" Then
'        Cells(satır, 1) = satır - 1
'      Else
'
'        satır = Range("A65536").End(3).Row + 1
'        Cells(satır, 1) = satır - 1
'        Cells(satır, 2) = TextBox1.Text 'Tarih
'        Cells(satır, 4) = ComboBox4.Text 'Personel Adı
'        Cells(satır, 5) = ComboBox5.Text 'Proje
'        Cells(satır, 6) = Format(TextBox4.Value, "hh:mm") 'Başlama Saati
'        Cells(satır, 7) = Format(TextBox5.Value, "hh:mm") 'Başlama Saati
'        Cells(satır, 9) = TextBox102.Text 'Açıklama
'        Cells(satır, 17) = Environ("username") & " - " & Format(Now, "dd.mm.yyyy hh.mm.ss")
    

End Sub
 
Arkadaşlar ilginize teşekkür ederim. Bu yapmak istediğim programda yapmak istediğim. Şantiyeden gelen bilgi formlarında yazan personel çalışma saatlerinin tek formda bir seferde data sayfasına kaydetmek. 20 sıra halinde yapmamın sebebi kişiler alt alta kaydetmem gerekiyor. Userfor üzerinden tek seferde data sayfasına kaydetmek istiyorum.

Hava durumu ise şantiyenin günlük hava durumunu günlük olarak girerek şantiyenin hava şartlarına göre çalışıp çalışmadığını geçmişe dönük tespit edebilmek.
 
Askm bey userformdaki diğer satırlar için bu kodları devam ettirsem 20 satır olarak kayıt yaptırabilir miyim.
 
Devam ettirmenize gerek yok. Zaten döngü ile tüm verileri girdirecek şekilde kod yazdım.
For x = 2 To 33 Step 2 ile combobox2 den başlayıp combo 33 e kadar 2 atlayarak işlem yapıyor. İlk combo2 sonraki 4 şeklinde gittiği için bu şekilde. Deneyin bir.
 
Evet tamda dediğiniz gibi olmuş ellerinize sağlık.

Peki Hava durumunu sadece userformdaki 1 sıranın verisine kaydetmesini istiyorum. Diğerlerine sıraların verisinde kaydetmesine gerek yok. Bu form 1 günlük form olduğu için girilen tarih için 1 sefer hava durumu bilgisinin girilmesi yeterli oluyor. Bunu nasıl yapabiliriz.
 
Aşağıdaki şekilde yalnız bir kere kaydetmek istediklerinizi döngünün dışına alın.

Kod:
Private Sub CommandButton1_Click() 'KAYDET BUTONU
Sheets("ŞANTİYE_MESAİ").Select

With Sheets("ŞANTİYE_MESAİ")
     Cells(satır, 3) = ComboBox1.Text 'Hava Durumu

 For x = 2 To 33 Step 2
If Me.Controls("ComboBox" & x).Text <> "" Then
satır = Range("A65536").End(3).Row + 1
    If Cells(satır, 2) <> "" Then
        Cells(satır, 1) = satır - 1
    Else
        
     
        Cells(satır, 1) = satır - 1
        Cells(satır, 2) = CDate(TextBox1.Text) 'Tarih
   
        
        Cells(satır, 4) = Me.Controls("ComboBox" & x).Text 'Personel Adı
        Cells(satır, 5) = Me.Controls("ComboBox" & x + 1).Text 'Proje
        Cells(satır, 6) = Format(Me.Controls("TextBox" & x).Value, "hh:mm") 'Başlama Saati
        Cells(satır, 7) = Format(Me.Controls("TextBox" & x + 1).Value, "hh:mm") 'Bitiş Saati
        Cells(satır, 9) = Me.Controls("TextBox" & x + 99).Text 'Açıklama
        Cells(satır, 17) = Environ("username") & " - " & Format(Now, "dd.mm.yyyy hh.mm.ss")
    End If
End If
Next
End With  
End Sub
 
İsminiz nedir size isminizle hitap etmek isterim.

Bütün satırları doldurduğumda ekteki gibi bir hata ile karşılaşıyorum. Birde 20 satırlı bir userform satırları atlayarak eksik kayıt yapıyor. Sorun nerde olabilir. Birde (Cells(satır, 9) = Me.Controls("TextBox" & x + 99).Text 'Açıklama) burdaki 99'un mantığı nedir. Açıklayabilirseniz sevinirim.
 

Ekli dosyalar

  • HATA.JPG
    HATA.JPG
    71 KB · Görüntüleme: 6
İsmim Ali. Aşağıdaki şekilde deneyin. Bu şekilde ben denedim çalışıyor. 99 rakamını Açıklama kısmındaki textlerin ismini 101 den başladığı için bu şekilde yapmıştım.
Kod:
Private Sub CommandButton1_Click() 'KAYDET BUTONU
Sheets("ŞANTİYE_MESAİ").Select
With Sheets("ŞANTİYE_MESAİ")

For x = 2 To 33 Step 2
If Me.Controls("ComboBox" & x).Text <> "" Then
satır = Range("A65536").End(3).Row + 1
    If Cells(satır, 2) <> "" Then
        Cells(satır, 1) = satır - 1
    Else
        
     
        Cells(satır, 1) = satır - 1
        Cells(satır, 2) = CDate(TextBox1.Text) 'Tarih
        
        If x = 2 Then Cells(satır, 3) = ComboBox1.Text 'Hava Durumu
        Cells(satır, 4) = Me.Controls("ComboBox" & x).Text 'Personel Adı
        Cells(satır, 5) = Me.Controls("ComboBox" & x + 1).Text 'Proje
        Cells(satır, 6) = Format(Me.Controls("TextBox" & x).Value, "hh:mm") 'Başlama Saati
        Cells(satır, 7) = Format(Me.Controls("TextBox" & x + 1).Value, "hh:mm") 'Bitiş Saati
        Cells(satır, 9) = Me.Controls("TextBox" & (x / 2) + 100).Text 'Açıklama
        Cells(satır, 17) = Environ("username") & " - " & Format(Now, "dd.mm.yyyy hh.mm.ss")
    End If
End If
Next
End With
End Sub
 
Ali bey teşekkür ederim hata düzeldi. Fakat şimdi 16. satıra kadar kayıt yapıyor. Ben size kolaylık olsun diye nesnelerin içini dolu bir şekilde gönderiyorum. Umarım işinizi görürür.

Birde bu yazmış olduğunuz kodların Properties penceresindeki Tabındex sıralaması ile bir bağlantısı var mı? Kodların mantığını anlamaya çalışıyorum o nedenle sordum.
 

Ekli dosyalar

For x = 2 To 33 Step 2 ifadesindeki 33 değerini 40 olarak değiştirin. Ben sanırım hatalı görmüşüm.
 
Ali bey teşekkür ederim şimdi tam istediğim gibi oldu. Bir sıkıntı olduğunda veya eklemem gereken bir işlem olduğunda yardımcı olursanız sevinirim. Kolay gelsin.
 
Geri
Üst