• DİKKAT

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

Listview Üzerinden Veri Değiştirme...

Katılım
8 Aralık 2011
Mesajlar
964
Excel Vers. ve Dili
Excel 2016,32bit


Merhabalar,
Gerek kendi araştırmalarım ve özellikle Saygı değer Halit Bey'in yardımı ile oluşturmaya çalıştığım sayfamda resmini koyduğum Listview1 deki en üst satıra tıkladığımda veriler yandaki Texboxların en üstteki kısma geçiyor.
Forumdaki örneklere bakarak ancak bu kadarını yapabildim.:oops:
Kod:
Private Sub ListView1_DblClick()
On Error Resume Next

X = ListView1.SelectedItem.Index

TextBox1 = ListView1.ListItems(X).ListSubItems(1)
TextBox2 = ListView1.ListItems(X).ListSubItems(2)


End Sub

Listview1 de en üst satıra tıkladığımda veriler geçiyor geçmesine ama diğer satırlara tıkladığımda tıkladığım satırdaki değer ,
Listview1 , 1.sutundaki ismin karşısındaki textbox a nasıl geçireceğimi beceremedim.

Aslında özetle yapmak istediğim ;

Listview1 deki satıra tıkladığımda en üst satırdaki gibi texbox a geçsin (sadece tıkladığım satırdaki veriler)
Ben değiştirme işlemini yapıp ,
KAYIT DÜZELT butonuna bastığımda diğer verilere hiç bir şey olmadan sadece değiştirme yaptığım kısım düzeltilsin.

Yukarıdaki kodlar ile textbox a veriyi alıp , kaydet dediğimde diğer veriler siliniyor:-(

4 adet listview mevcut birisi için olursa diğerlerini onun üzerinden yapmaya çalışacağım, İnşaAllah..
 

Ekli dosyalar

Son düzenleme:
Merhaba,

İnceler misiniz? Biraz hesap kitap yapmak zorunda kalınıyor bu mantıkta.

Eğer Textboxları 1 ve 100 ,2 ve 200 gibi mantıkla adlandırılsa hesap biraz daha kolay olur diye düşünüyorum.


Kod:
Private Sub ListView1_DblClick()

    On Error Resume Next
    Dim i   As Integer, _
        X   As Integer
        
    X = ListView1.SelectedItem.Index
    i = (X - 1) * 2 + 1
    UserForm4.Controls("TextBox" & i) = ListView1.ListItems(X).ListSubItems(1)
    i = i + 1
    UserForm4.Controls("TextBox" & i) = ListView1.ListItems(X).ListSubItems(2)

End Sub
 
Merhabalar Necdet bey,

Yenice deneme fırsatı buldum. Teşekkür ederim ilginize..
Kodları denediğimde istediğim şekilde hangi satıra tıkladığımda geçiş sağlanıyor. Ama textbox a geçen değeri değiştirip,kaydet dediğimde değiştirme yaptığım veri dışındakiler siliniyor:-(

Öneride bulunduğunuz kısmı anlayamadım, Textbox lar üzerinde nasıl bir adlandırma yapsam kolaylık olur.
 
Bir eleştiride benden neden ListView nesnesi 4 tane buna gerek varmı bir tek ListView nesnede bu işlemler yapılabilir.
 
Bir eleştiride benden neden ListView nesnesi 4 tane buna gerek varmı bir tek ListView nesnede bu işlemler yapılabilir.
:oops::oops:

Merhabalar Halit Bey,

Hani a,b,c gruplarım vardı ya, bu şeklide yaparsam her grubun sonuçlarını da aynı anda görürüm diye böyle bir şey yapmıştım.

Tek olur ise hepsi de gözükür mü ki..
 


Halit bey, eleştirinize binaen böyle bir şey yapmaya çalışıyorum:oops:.
Sizde böyle bir şey kastettiniz sanırım. Ama işin için çıkabilir miyim bilemiyorum.:???::???:

Kodları bu şekilde düzenledim.
Kod:
Sub UserForm_Initialize()

With ListView1
    .View = lvwReport  'ListView de buna dikkat etmeliyiz, Eğer ListWiev de burayı lvwReport olarak ayarlamazsak diğer yapılan işlemler listemizde gözükmeyecektir.
     .ColumnHeaders.Add , , "MARKER ", 50
     .ColumnHeaders.Add , , "a1", 20
     .ColumnHeaders.Add , , "a2", 20
      .ColumnHeaders.Add , , "b1", 20
       .ColumnHeaders.Add , , "b2", 20
        .ColumnHeaders.Add , , "c1", 20
         .ColumnHeaders.Add , , "c2", 20
          .ColumnHeaders.Add , , "cc1", 20
          .ColumnHeaders.Add , , "cc2", 20
          .ColumnHeaders.Add , , "ccc1", 20
          .ColumnHeaders.Add , , "ccc1", 20
     
     
   .FullRowSelect = True 'liste elemanını seçtiğinizde tüm satır seçili olur.
   .Gridlines = True 'Listeyi çizgili yapar.
End With
For i = 3 To Sheets("AL").Cells(6666, 1).End(3).Row
ListView1.ListItems.Add , , Sheets("AL").Cells(i, 1).Value
ListView1.ListItems(i - 2).SubItems(1) = Sheets("AL").Cells(i, 2).Value
ListView1.ListItems(i - 2).SubItems(2) = Sheets("AL").Cells(i, 4).Value
ListView1.ListItems(i - 2).SubItems(1) = Sheets("AL").Cells(i, 5).Value
ListView1.ListItems(i - 2).SubItems(2) = Sheets("AL").Cells(i, 7).Value
ListView1.ListItems(i - 2).SubItems(1) = Sheets("AL").Cells(i, 8).Value
ListView1.ListItems(i - 2).SubItems(2) = Sheets("AL").Cells(i, 10).Value
ListView1.ListItems(i - 2).SubItems(1) = Sheets("AL").Cells(i, 11).Value
ListView1.ListItems(i - 2).SubItems(2) = Sheets("AL").Cells(i, 13).Value

Next i




End Sub
Lakin verileri görüntüle yemedim ama bakıyorum neden ki diye:-)

Kod:
SubItems
kısımlarındaki sanırım sütun sayılarını düzeltmem gerekti ve takip edince oldu.
 
Son düzenleme:
Başka bir uyarıda projenizde mümkün oldukca boş satır ve sutun olmasın örnek boş sutunlar C,F,I,L bu sutünlar niçin boş kullanmıyacaksanız bu sutünları silin kodları o şekilde revize edilir.
 


4 nolu mesajda Halit Bey'in fikri ile Listview leri tek bir Listview de toplamayı başardım ve 1 nolu mesajımda ki dosyamı güncelledim.

Yine Halit Bey'in önerisi olan boş sütunları silme hususunu denedim,Lİstview e veriler geldi gerekli yerleri değiştirdim. Fakat koşullu renklendirme kısmında problem yaşadığım için daha da fazla karıştırmadan eski haline almak zorunda kaldım.:oops:

En baştaki veri değiştirme hususuna gelir isem,

2 nolu mesajda Sayın Necdet Bey'in Kodlarını denediğimde istediğim şekilde hangi satıra tıkladığımda geçiş sağlanıyor. Ama textbox a geçen değeri değiştirip,kaydet dediğimde değiştirme yaptığım veri dışındakiler siliniyor:-(

Yada bu veri değiştirme olayını en kolay nasıl yapabiliriz.
Acaba KAYIT DÜZELT butonuna bastığımda Listview 1 ve 2. sütundaki verilerin hepsi ilgili text lere geçse bende düzelteceğimi düzeltim KAYDET dediğimde hepsi aynı şekilde kayıt olur diye düşündüm.
 
Halit Bey,

Orjinal dosyamda userfom4 gibi 3 adet daha form var. Listview leri teke düşürdüm fakat her grup verilerini ayrı ayrı girmem gerekiyor ve haliyle her grubun da verilerini düzeltirken kendi userformun da iken yapmam gerekecek.:-(

Bu form benim taslağım oluyor , diğerlerini de bu formdan bakarak düzenlemeye çalışıyorum.

Dosyanızda evet veriler güzel şekilde aktarılıyor ve değiştirmeye olanak sağlıyor, fakat kullanılış açısından bana uygun olmadı :-((
 
Merhabalar Necdet bey,

textbox a geçen değeri değiştirip,kaydet dediğimde değiştirme yaptığım veri dışındakiler siliniyor:-(

Öneride bulunduğunuz kısmı anlayamadım, Textbox lar üzerinde nasıl bir adlandırma yapsam kolaylık olur.

Merhaba,

Ben sadece sorunuza çözüm getirdim. Başka olaylara bakmadım, tüm kodları incelemem ve anlamam olası değil.

Textbox'ları adlandırırken birinci satırın birinci Textbox'ın adını Textbox1, yanındaki örneğin Textbox100 gibi bir ad verilebilir. İkinci satırdakine Textbox2, yanındaki Textbox200 gibi adlandırılabilinir. Bu durumda X'in değerine göre satır ve yanındaki textbox'un değeri daha kolay hesaplanır anlamında söyledim. Yani Hesaplama daha kolay olur.
 
Önerileriniz için çok teşekkür ederim,Necdet Bey..Acaba böyle mi ;

Listview1'e tıkladığımda ,

1 satır bilgileri ; Textbox 1 - Textbox 2
2 satır bilgileri ; Textbox 3 - Textbox 4
3 satır bilgileri ; Textbox 5 - Textbox 5
4 satır bilgileri ; Textbox 6 - Textbox 7
.
.
.
15.satır bilgileri ; Textbox 29 - Textbox 30
geçmesi gerekiyordu.
 
Önerileriniz için çok teşekkür ederim,Necdet Bey..Acaba böyle mi ;

Listview1'e tıkladığımda ,

1 satır bilgileri ; Textbox 1 - Textbox 2
2 satır bilgileri ; Textbox 3 - Textbox 4
3 satır bilgileri ; Textbox 5 - Textbox 5
4 satır bilgileri ; Textbox 6 - Textbox 7
.
.
.
15.satır bilgileri ; Textbox 29 - Textbox 30
geçmesi gerekiyordu.

Merhaba,

Bu mevcut durumdu, kodları zaten ona göre vermiştim :)
 
Merhabalar Sayın Necdet ve Halit Bey ;

Sanırım çözümü şu şekilde sağlıyor gibiyim. Şöyle ki, KAYIT DÜZELT butonuna forumdan örneklere bakarak yaptığım şu kodları koydum ;
Kod:
Private Sub CommandButton4_Click()

TextBox1.Text = Sheets("AL").Range("B3").Value
TextBox2.Text = Sheets("AL").Range("D3").Value
TextBox3.Text = Sheets("AL").Range("B4").Value
TextBox4.Text = Sheets("AL").Range("D4").Value
TextBox5.Text = Sheets("AL").Range("B5").Value
TextBox6.Text = Sheets("AL").Range("D5").Value
TextBox7.Text = Sheets("AL").Range("B6").Value
TextBox8.Text = Sheets("AL").Range("D6").Value
TextBox9.Text = Sheets("AL").Range("B7").Value
TextBox10.Text = Sheets("AL").Range("D7").Value
TextBox11.Text = Sheets("AL").Range("B8").Value
TextBox12.Text = Sheets("AL").Range("D8").Value
TextBox13.Text = Sheets("AL").Range("B9").Value
TextBox14.Text = Sheets("AL").Range("D9").Value
TextBox15.Text = Sheets("AL").Range("B10").Value
TextBox16.Text = Sheets("AL").Range("D10").Value
TextBox17.Text = Sheets("AL").Range("B11").Value
TextBox18.Text = Sheets("AL").Range("D11").Value
TextBox19.Text = Sheets("AL").Range("B12").Value
TextBox20.Text = Sheets("AL").Range("D12").Value
TextBox21.Text = Sheets("AL").Range("B13").Value
TextBox22.Text = Sheets("AL").Range("D13").Value
TextBox23.Text = Sheets("AL").Range("B14").Value
TextBox24.Text = Sheets("AL").Range("D14").Value
TextBox25.Text = Sheets("AL").Range("B15").Value
TextBox26.Text = Sheets("AL").Range("D15").Value
TextBox27.Text = Sheets("AL").Range("B16").Value
TextBox28.Text = Sheets("AL").Range("D16").Value
TextBox29.Text = Sheets("AL").Range("B17").Value
TextBox30.Text = Sheets("AL").Range("D17").Value
End Sub


Satırdaki değerleri tıklama ile olmasa da bu şekilde Text lere alıyorum. Değişiklikleri yapıp ,KAYDET dediğimde şimdilik sorun yok gibi.:mutlu::mutlu:

Gerçekten çok teşekkür ederim. Bakalım daha ne gibi aksilikler çıkacak ,çalışarak göreceğim bakalım.
 
Merhaba,

Apalamadan yürümek olmaz, işin başında ne kadar sıkıntıya düşerseniz öğrenme daha kalıcı olur.
İnatla devam :)
 
Geri
Üst