• DİKKAT

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

Excele veri giriş UserFormuna kod

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

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,986
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Herkese merhabalar!...

Kod yazmayı pek bilmiyorum, bulduğum örnekleri de UserForm'uma uyarlayamadım.

Excele veri girişini ve veri değişikliğini sağlamak için hazırlanmış;
bir ComboBox, üç TextBox ve bir CheckBox ile Bir ListBox
içeren UserForm için kod yazma konusunda yardımcı olabilecek kimse var mıdır acaba?

UserFormla yapılacak işlemi açıklamaya çalıştım.

İlgilenenlere teşekkürler.
 

Ekli dosyalar

Merhaba
Sorularınızda 7. soruyu anlamadım. Biraz açıklar mısınız_?
 
Merhaba
Sorularınızda 7. soruyu anlamadım. Biraz açıklar mısınız_?

Şöyle söyleyeyim;

UserFormu kullanırken, önce ürün seçeceğim (combobox), ardından TextBox1'e miktarı yazacağım ( binlik ayracıyla ayrılmış sayı), ardından imalat başlangıç tarihini TextBox2'ye yazacağım ( gg.aa.yyyy şeklinde ) ve sonra da imalat başlangıç saatini ( saat:dakika:saniye şeklinde ), en sonunda da KAYDET düğmesini kullanarak bu verileri üretim sayfasına boşluksuz (ilk satır başlık olduğundan 2. satırdan başlayarak) olarak aktaracağım, listboxtada aynı veriler listelenecek.

İkinci bir veri satırı (excel belgesi üretim sayfasına bir sonraki satıra) girişi için yukarıdaki işlemlerin tekrarlanması gerekiyor. Burada tarih ve saat textboxlarına her seferinde veri yazmak yerine ilk satıra ilişkin veriler yazılırken, o checkbox seçilsin ve böylece sadece ilk veri girişinde tarih ve saati yazıp, ikinci ve devamı veriler için sadece ürün seçimi ve miktar verisi girmeyi düşündüm.

Tabi sanırım UserForma bir tane de "KAYITLI VERİLER" düğmesi ekleyip daha önce kaydedilen verileri listboxa getirmek ve yeni veri girişlerine, kalınan noktadan devam etmeyi sağlamak gerekecek. Yoksa UserFormu her açtığımızda eski verileri temizlemek gerekirdi. Bunu tabii ki istemiyorum.
Umarım anlatabilmişimdir.

İlginiz için teşekkürler.
 
Soruma yanıt vermediniz.
Ben sadece 7. soruda ne yapmak istediğinizi öğrenmek istedim. Diğer işlemleri ben tamamladım zaten.
 
7. soru derken, kastettiğiniz 7. madde sanırım.O da CehckBox ile ilgili.
Ben de onu açıklamaya çalışmıştım.
Bir kez daha söyleyeyim. Bu checkbox seçildiğinde, tarih ve saat textboxları BİRER kez kullanılacak.
Birinci satır verileri yazılırken textboxlara girilen tarih ve saat bilgilerinin aynısı, devam eden satırlar için de excel sayfasına ve listboxa (yani sanırım visible özelliği false yapılarak) otomatik yazılacak.
Umarım anlatabilmişimdir.
Zahmet veriyorum, kusura bakmayınız.
Teşekkürler.
 
Merhaba
Userform'da bulunan Combobox1'e sağ tıklayın Properties - Row Source'nin karşısını temizleyin.
Sonra userform'un kod bölümüne bu kodları yapıştırın ve deneyin.
Kod:
Private Sub CommandButton1_Click()
Dim STR As Long, S1 As Worksheet
Set S1 = Sheets("sipariş")
STR = S1.Range("A" & Rows.Count).End(xlUp).Row + 1
S1.Cells(STR, "A") = ComboBox1
S1.Cells(STR, "B") = TextBox1 * 1
S1.Cells(STR, "C") = CDate(TextBox2)
S1.Cells(STR, "D") = CDate(TextBox3)
ListBox1.RowSource = ""
ListBox1.RowSource = S1.Name & "!A2:D" & STR
ComboBox1 = Empty: TextBox1 = Empty
If CheckBox1.Value = False Then
TextBox2 = Empty: TextBox3 = Empty
End If
End Sub
Private Sub CommandButton2_Click()
Dim STR As Long, S1 As Worksheet
Set S1 = Sheets("sipariş")
STR = ListBox1.ListIndex + 2
S1.Cells(STR, "A") = ComboBox1
S1.Cells(STR, "B") = TextBox1 * 1
S1.Cells(STR, "C") = CDate(TextBox2)
S1.Cells(STR, "D") = CDate(TextBox3)
STR = S1.Range("A" & Rows.Count).End(xlUp).Row
ListBox1.RowSource = ""
ListBox1.RowSource = S1.Name & "!A2:D" & STR
ComboBox1 = Empty: TextBox1 = Empty
If CheckBox1.Value = False Then
TextBox2 = Empty: TextBox3 = Empty
End If
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim STR As Long, S1 As Worksheet
Set S1 = Sheets("sipariş")
STR = ListBox1.ListIndex + 2
ComboBox1 = S1.Cells(STR, "A")
TextBox1 = S1.Cells(STR, "B").Value
TextBox2 = Format(S1.Cells(STR, "C"), "dd.mm.yyyy")
TextBox3 = Format(S1.Cells(STR, "D"), "hh:mm:ss")
End Sub
Private Sub TextBox1_Change()
TextBox1 = Format(TextBox1, "#,##0")
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(TextBox2) = 6 Then
TextBox2 = DateSerial(Right(TextBox2, 4), Mid(TextBox2, 2, 1), Left(TextBox2, 1))
ElseIf Len(TextBox2) = 7 Then
TextBox2 = DateSerial(Right(TextBox2, 4), Mid(TextBox2, 3, 1), Left(TextBox2, 2))
ElseIf Len(TextBox2) = 8 Then
TextBox2 = DateSerial(Right(TextBox2, 4), Mid(TextBox2, 3, 2), Left(TextBox2, 2))
End If
TextBox2 = Format(TextBox2, "dd.mm.yyyy")
End Sub
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(TextBox3) = 5 Then
TextBox3 = TimeSerial(Left(TextBox3, 1), Mid(TextBox3, 2, 2), Right(TextBox3, 2))
ElseIf Len(TextBox3) = 6 Then
TextBox3 = TimeSerial(Left(TextBox3, 2), Mid(TextBox3, 3, 2), Right(TextBox3, 2))
End If
TextBox3 = Format(TextBox3, "hh:mm:ss")
End Sub
Private Sub UserForm_Initialize()
Dim STR As Long, S1 As Worksheet
Set S1 = Sheets("U")
With WorksheetFunction
For STR = 2 To S1.Cells(Rows.Count, "A").End(xlUp).Row
If .CountIf(S1.Range("A2:A" & STR), S1.Cells(STR, "A")) = 1 Then
ComboBox1.AddItem S1.Cells(STR, "A")
End If: Next: End With
Set S1 = Sheets("sipariş")
ListBox1.ColumnCount = 4
ListBox1.ColumnWidths = "50;100;150;200"
ListBox1.RowSource = S1.Name & "!A2:D" & STR
End Sub
 
Son düzenleme:
Teşekkürler Sayın asi_kral...

Tekrar merhabalar.
Çok çok teşekkür ederim. Zahmet verdim.

Formdaki listboxun özelliklerinden columnheads özelliğini true yaptım ve böylece sütun başlıkları excel belgesinden geldi. Bunu yapmak ile listboxun üstüne label kullanarak sütun başlığı yazmak kullanış açısından birşey değiştirir mi bilemiyorum. Sanırım nesnemiz listbox olduğu için sütun başlıkları işlevsiz.

-- Listboxtaki sütun genişliklerini ayarlayabilmek için, UserForm_Initialize olayına
End Sub dan hemen önce ListBox1.ColumnWidths = "50;50;50;20;20" şeklinde satır ekledim, ancak sütun genişliklerini ayarlayamadım.

-- Sanırım kullandığımız nesne listview değil listbox olduğu için sütunların hizalama işini ayrı ayrı yapamıyoruz.

Sütun genişliği ve sütunları ayrı ayrı hizalamanın bir yolu var mıdır acaba?

İyi günler dilerim.
 
Üstteki kodu güncelledim.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Geri
Üst