• DİKKAT

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

Listboxtaki verilerde değişiklik ve silme işlemi yapmak

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,667
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selam arkadaşlar,

Ekte yolladığım örnek çalışmamda yapmış olduğum kayıtlarda değişiklik veya silme işlemi yapmak istiyorum. Forumda araştırdım kendime uyarladım fakat yaptığım değişiklikleri kaydedemedim. Listboxta mouse ile seçtiğim kayıdı textboxlara aldırıyorum ve değişiklik yapıp DEÐİÞTİR butonuna tıklayınca bu değişikliği kaydetmesini istiyorum ve yine listboxtan seçmiş olduğum kaydı SİL butonuna bastığımdada silmek istiyorum. Bu konuda yardımlarınızı bekliyorum.
 
Dosyanızda bazı değişiklikler yaptım ekte inceleyin.
 
Teşekkür ederim. :hey:
 
Sn. leventm,

Ekli dosyayı inceledim. Gayet hoş olmuş fakat tüm kayıtları silerken kodlardaki autofill özelliğinden olsa gerek hata veriyor. Tabloyu tamamen boşaltamıyorum. Sadece başlık kalacak şekilde. :hey:
 
Sil butonundaki kodu aşağıdaki ile değiştirerek deneyin.

[vb:1:cfa591262c]Private Sub CommandButton3_Click()
sat = ListBox1.ListIndex + 2
adr = "a" & sat & ":e" & sat
Range(adr).Delete
Cells([d65536].End(3).Row, "e") = WorksheetFunction.Sum(Range("e2:e" & [d65536].End(3).Row - 1))
If [b3] = 0 Then Exit Sub
[a2] = 1
[a3] = 2
sonsat = [B65536].End(3).Row
Range("a2:a3").AutoFill Destination:=Range("a2:a" & sonsat)
End Sub[/vb:1:cfa591262c]
 
Teşekkür ederim. :hey:
 
Sn. leventm,

Sizin verdiğiniz kodlarda ufak değişiklik yapmaya çalışıyorum fakat başarılı olamadım. Kodları aşağıdaki şekilde düzenledim.

1. KAYDET KODU
Private Sub CommandButton1_Click()
If TextBox1.Value = "" Or TextBox2.Value = "" Or TextBox3.Value = "" Or TextBox4.Value = "" Then
MsgBox ("Kayıt işlemi için gerekli tüm bölümlere veri girmelisiniz." _
& Chr(10) & "Lütfen boş bıraktığınız bölümleri doldurunuz."), vbExclamation, "DİKKAT !"
TextBox1.SetFocus

Else

Sheets("GIDA").Select
Range("A2").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select

Loop

If Range("A2").Value = "" Then
Range("A2").Value = 1
Range("A2").Select

Else

ActiveCell.Value = ActiveCell.Offset(-1, 0).Value + 1

End If

ActiveCell.Offset(0, 1) = CDate(TextBox1.Text)
ActiveCell.Offset(0, 2) = TextBox2.Text
ActiveCell.Offset(0, 3) = TextBox3.Text
ActiveCell.Offset(0, 4) = TextBox4.Text

Range("B2").Select
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
TextBox1.SetFocus

Call Userform_initialize
ActiveWorkbook.Save
End If
End Sub

2. DEÐİÞTİR KODU
Private Sub CommandButton2_Click()
Satır = ListBox1.ListIndex + 2
Sonsatır = [D65536].End(3).Row + 2
For a = 2 To 5
Cells(Sonsatır, a) = Controls("Textbox" & a)
Next
For b = 2 To 5
Cells(Satır, b) = Cells(Sonsatır, b)
If b = 5 Then Cells(Satır, b) = Cells(Sonsatır, b) * 1
Cells(Sonsatır, b).ClearContents
Next
End Sub

Bu 2. kodda 2 To 5 bölümünü 1 To 4 yapıyorum bu seferde düzeltme işlemini 1 hücre sola kaydırarak yapıyor. Bu kodu nasıl düzenleyebiliriz. (Zahmet olmazsa kodun mantığınıda açıklayabilirmisiniz.) :hey:
 
Selam arkadaşlar kodla ilgili yardımlarınızı bekliyorum... :yardim:
 
Selam arkadaşlar kodla ilgili yardımlarınızı bekliyorum... :yardim:
 
Aşağıdaki gibi deneyin.

[vb:1:100150f164]Private Sub CommandButton2_Click()
Satır = ListBox1.ListIndex + 2
Sonsatır = [D65536].End(3).Row + 2
For a = 1 To 4
Cells(Sonsatır, a+1) = Controls("Textbox" & a+1)
Next
For b = 1 To 4
Cells(Satır, b+1) = Cells(Sonsatır, b+1)
If b = 5 Then Cells(Satır, b+1) = Cells(Sonsatır, b+1) * 1
Cells(Sonsatır, b+1).ClearContents
Next
End Sub
[/vb:1:100150f164]

Kodun mantığı şöyledir. Textboxlarda değişiklik yapıldıktan sonra veriler birinci döngü ile en alttaki boş hücrelere aktarılır. Sonrada ikinci döngü ile veriler, bu hücrelerden asıl değişikliğin yapılacağı hücrelere aktarılır, ve an alttaki boş hücredeki gereksiz olan veriler tekrar silinir.

Þunu sorabilirsiniz, neden önce veriler en alt satıra kaydedilip sonradan asıl yerine aktarılıyorda direk olarak textboxlardan aktarılmıyor? Sebebini tam olarak bilmesemde sanıyorum listboxa rowsource ile veriler alındığından direk textboxtan kendi rowsource alanına direk aktarmayı kabul etmiyor, bu sebeple veriler önce alan dışına aktarılıp sonradan yerine taşınıyor.
 
Sn. leventm,

Verdiğiniz değerli bilgiler için teşekkür ederim fakat kodda aşağıdaki bölümde hata veriyor.

Cells(Sonsatır, a + 1) = Controls("Textbox" & a + 1)

Could not find the specified object.
 
Controls("Textbox" & a + 1)

Yukarıdaki satırda hata veriyor, textbox isimleriniz textbox2,textbox3,.......textbox5 şeklinde ritmik gitmelidir.

Eğer textbox1,textbox2,textbox3,textbox4 şeklinde gidiyor ise bu durunda aşağıdaki ile değiştirin.

Controls("Textbox" & a)
 
Teşekkür ederim. :hey:
 
Geri
Üst