• DİKKAT

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

Listview'da sil ve düzelt işlemi için yardım.

Katılım
12 Ocak 2009
Mesajlar
838
Excel Vers. ve Dili
2003
Merhaba arkadaşlar.
Ekte sunduğum çalışmamda bulunan listviw için sil ve düzelt butonlarım için gerekli kodu uyarlayamadım.
Yardımcı olacak arkadaşlara teşekkür ederim.
 

Ekli dosyalar

İkinci satırı silmek için
Kod:
ListView1.ListItems.Remove (2)
Seçili satırı silmek için
Kod:
ListView1.ListItems.Remove (ListView1.SelectedItem.Index)




İkinci satır başlığını değiştirmek için
Kod:
ListView1.ListItems(2).Text = "başka metin"
İkinci satırın ikinci sutünunu değiştirmek için
Kod:
ListView1.ListItems(2).SubItems(1) = "başka metin"
 
İkinci satırı silmek için
Kod:
ListView1.ListItems.Remove (2)
Seçili satırı silmek için
Kod:
ListView1.ListItems.Remove (ListView1.SelectedItem.Index)

İkinci satır başlığını değiştirmek için
Kod:
ListView1.ListItems(2).Text = "başka metin"
İkinci satırın ikinci sutünunu değiştirmek için
Kod:
ListView1.ListItems(2).SubItems(1) = "başka metin"

Arkadaşım ilginize teşekkür ederim.
Yapmak istediğim sadece listview'da çift tıklama ile textboxlara yüklenen verilerin ait olduğu excel sayfasında sil ve değiştir yapılmasını sağlamak.
Örnek:DEPO sayfasındaki herhangi bir satırdaki veri silindiği zaman numaralandırmanın yeniden yapılmasını sağlamak.
 
Merhaba arkadaşlar.
Ekte sunduğum çalışmamda bulunan listviw için sil ve düzelt butonlarım için gerekli kodu uyarlayamadım.
Yardımcı olacak arkadaşlara teşekkür ederim.

Merhaba

Demekki bu konuda baya bir yol almışsın buralara geldiğine göre
Soruna gelince listwiev açılışta ilk başa bir sutün daha ekliyerek bu işini çözebilirsin yani ilk sutün gizli olacak burada satırların numarası olacak örnek olarak aşağıdaki kendi kodlarına ilave yaptım inceleyiniz.

Kod:
Private Sub UserForm_Initialize()
For i = 1 To Sheets.Count
ComboBox1.AddItem Sheets(i).Name
Next i
With Me.ListView1
  .Gridlines = True
  .FullRowSelect = True
  .View = lvwReport
  .ListItems.Clear
  .ColumnHeaders.Clear
End With
With ListView1
.View = lvwReport
.ColumnHeaders.Add , , "no ", 0
.ColumnHeaders.Add , , "Sıra No ", 45
.ColumnHeaders.Add , , "Malzemenin / İlacı Adı", 180, lvwColumnLeft
.ColumnHeaders.Add , , "Miadı", 60, lvwColumnCenter
.ColumnHeaders.Add , , "Depo Mevcudu", 70, lvwColumnCenter
.ColumnHeaders.Add , , "Kritik Seviye", 70, lvwColumnCenter
.FullRowSelect = True
.Gridlines = True
End With
Set sh = Sheets("DEPO")
son = sh.Cells(65536, 1).End(xlUp).Row
For i = 2 To son
If sh.Cells(i, 2) <> "" Then
Set l = ListView1.ListItems.Add
l.Text = i
l.SubItems(1) = sh.Cells(i, 1)
l.SubItems(2) = sh.Cells(i, 2)
l.SubItems(3) = sh.Cells(i, 3)
l.SubItems(4) = sh.Cells(i, 4)
l.SubItems(5) = sh.Cells(i, 5)
If l.SubItems(3) = "0" Or l.SubItems(3) = "" Then  '<-- x
l.ForeColor = vbBlue                                  '<-- x
l.Bold = True                                           '<-- x
For z = 1 To l.ListSubItems.Count                 '<-- x
  l.ListSubItems(z).ForeColor = vbBlue             '<-- x
  l.ListSubItems(z).Bold = True                  '<-- x
Next z                                                 '<-- x
End If                                                    '<-- x
End If
Next i
Set sh = Sheets("DEPO")
son = sh.Cells(65536, "a").End(xlUp).Row
TextBox1.Value = son
Label10 = son
cmdKAYDET.Tag = cmdKAYDET.BackColor
cmdSİL.Tag = cmdSİL.BackColor
cmdDÜZELT.Tag = cmdDÜZELT.BackColor
cmdTEMİZLE.Tag = cmdTEMİZLE.BackColor
cmdYENİKAYIT.Tag = cmdYENİKAYIT.BackColor
cmdÇIKIŞ.Tag = cmdÇIKIŞ.BackColor
End Sub
Private Sub ListView1_DblClick()
Y = ListView1.SelectedItem.Index
Label10 = ListView1.ListItems(Y).Text
TextBox1 = ListView1.ListItems(Y).ListSubItems(1).Text
TextBox2 = ListView1.ListItems(Y).ListSubItems(2).Text
TextBox4 = ListView1.ListItems(Y).ListSubItems(3).Text
TextBox5 = ListView1.ListItems(Y).ListSubItems(5).Text
TextBox6 = ListView1.ListItems(Y).ListSubItems(5).Text
End Sub
 
Halit hocam çok teşekkür ederim.
Buralara kadar gelmem, sizin gibi değerli üstatların yazdığı kodları çalışmalarıma sadece uyarlamamdan gelmektedir. Sizlerin yazdığı kodları okuyarak, mantık yürüterek ve deneme yanılma yolu ile birşeyler çözmeye,öğrenmeye çalışıyorum. Bizim zamanımızda sadece msdos vardı, formüldü, makroydu, algoritmaydı vs. bunlarla sizlerin sayesinde tanıştık.
İyiki böyle siteler, forumlar ve sizin gibi bilgilerini bizlerle paylaşan değerli üstatlar var.

Açtığım konuya gelince, tanımladığınız koda rağmen listview'dan textboxlara yüklediğim verilerle sil değiştir yapmak istediğimde alakasız yerlerde değişiklik yapıyor.

Benim yapmak istediğim textboxlara yüklediğim verilerde düzeltme yapınca verinin kaynağında da doğru bir şekilde kaydetmesi ve veri silmek istediğimde de doğru verinin silinerek doğru bir şekilde tekrar sıralanması.

Tarafınızca paylaşılan Listview de 50 sütün süzme işlemleri isimli dosyayı da epeyce inceledim ancak bana göre çok detaylı ve karmaşık bir kodlama yapmışsınız. Benim için hayal ötesinde bir çalışma ancak kendi çalışmama uyarlama yapamadım.
 
ekli dosyanızı kontrol ediniz.
 

Ekli dosyalar

ekli dosyanızı kontrol ediniz.

Halit hocam ellerinize sağlık, çok teşekkür ediyorum. Çalışmamın son hali ektedir.
Depo sayfasına cmdYENİKAYIT, cmdSİL, cmdKAYITVE cmdDÜZELT butonlarının click olayına eklenecek kod ile aşağıdaki formüller yazdırılabilirmi.

Örnek:
D sütununa D2 hücresinden başlayarak;
Kod:
=EĞER(H2="";"";((H2+J2+K2+L2+N2+O2+P2+R2+S2+T2+V2+W2+X2+Z2+AA2+AB2+AD2+AE2+AF2+AH2+AI2+AJ2+AL2+AM2+AN2+AP2+AQ2+AR2+AT2+AU2+AV2+AX2+AY2+AZ2+BB2+BC2+BD2)-(I2+M2+Q2+U2+Y2+AC2+AG2+AK2+AO2+AS2+AW2+BA2)))
formülünü yazdıralım.

I,M,Q,U,Y,AC,AG.AK.AO,AS,AW ve BA sütunları içinde 2.satırdan başlayarak
Kod:
I=DÜŞEYARA(A2;Ocak!B:AK;36;0)
M=DÜŞEYARA(A2;Şubat!B:AK;36;0)
Q=DÜŞEYARA(A2;Mart!B:AK;36;0)
U=DÜŞEYARA(A2;Nisan!B:AK;36;0)
Y=DÜŞEYARA(A2;Mayıs!B:AK;36;0)
AC=DÜŞEYARA(A2;Haziran!B:AK;36;0)
AG=DÜŞEYARA(A2;Temmuz!B:AK;36;0)
AK=DÜŞEYARA(A2;Ağustos!B:AK;36;0)
AO=DÜŞEYARA(A2;Eylül!B:AK;36;0)
AS=DÜŞEYARA(A2;Ekim!B:AK;36;0)
AW=DÜŞEYARA(A2;Kasım!B:AK;36;0)
BA=DÜŞEYARA(A2;Aralık!B:AK;36;0)

formülleri yazdırılabilirmi.
 

Ekli dosyalar

I,M,Q,U,Y,AC,AG.AK.AO,AS,AW ve BA sütunları içinde 2.satırdan başlayarak
Kod:
I=DÜŞEYARA(A2;Ocak!B:AK;36;0)
M=DÜŞEYARA(A2;Şubat!B:AK;36;0)
Q=DÜŞEYARA(A2;Mart!B:AK;36;0)
U=DÜŞEYARA(A2;Nisan!B:AK;36;0)
Y=DÜŞEYARA(A2;Mayıs!B:AK;36;0)
AC=DÜŞEYARA(A2;Haziran!B:AK;36;0)
AG=DÜŞEYARA(A2;Temmuz!B:AK;36;0)
AK=DÜŞEYARA(A2;Ağustos!B:AK;36;0)
AO=DÜŞEYARA(A2;Eylül!B:AK;36;0)
AS=DÜŞEYARA(A2;Ekim!B:AK;36;0)
AW=DÜŞEYARA(A2;Kasım!B:AK;36;0)
BA=DÜŞEYARA(A2;Aralık!B:AK;36;0)

formülleri yazdırılabilirmi.

I,M,Q,U,Y,AC,AG.AK.AO,AS,AW ve BA sütunları için gerekli makroyu, makro kaydet yöntemi ile çözdüm.

Kod:
Sub FormulYaz()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set sh = Sheets("DEPO")
sh.Range("I2:I250").Rows.Formula = "=IF(RC[-8]="""","""",VLOOKUP(RC[-8],Ocak!C[-7]:C[28],36,0))"
sh.Range("M2:M250").Rows.Formula = "=IF(RC[-12]="""","""",VLOOKUP(RC[-12],Şubat!C[-11]:C[24],36,0))"
sh.Range("Q2:Q250").Rows.Formula = "=IF(RC[-16]="""","""",VLOOKUP(RC[-16],Mart!C[-15]:C[20],36,0))"
sh.Range("U2:U250").Rows.Formula = "=IF(RC[-20]="""","""",VLOOKUP(RC[-20],Nisan!C[-19]:C[16],36,0))"
sh.Range("Y2:Y250").Rows.Formula = "=IF(RC[-24]="""","""",VLOOKUP(RC[-24],Mayıs!C[-23]:C[12],36,0))"
sh.Range("AC2:AC250").Rows.Formula = "=IF(RC[-28]="""","""",VLOOKUP(RC[-28],Haziran!C[-27]:C[8],36,0))"
sh.Range("AG2:AG250").Rows.Formula = "=IF(RC[-32]="""","""",VLOOKUP(RC[-32],Temmuz!C[-31]:C[4],36,0))"
sh.Range("AK2:AK250").Rows.Formula = "=IF(RC[-36]="""","""",VLOOKUP(RC[-36],Ağustos!C[-35]:C,36,0))"
sh.Range("AO2:AO250").Rows.Formula = "=IF(RC[-40]="""","""",VLOOKUP(RC[-40],Eylül!C[-39]:C[-4],36,0))"
sh.Range("AS2:AS250").Rows.Formula = "=IF(RC[-44]="""","""",VLOOKUP(RC[-44],Ekim!C[-43]:C[-8],36,0))"
sh.Range("AW2:AW250").Rows.Formula = "=IF(RC[-48]="""","""",VLOOKUP(RC[-48],Kasım!C[-47]:C[-12],36,0))"
sh.Range("BA2:BA250").Rows.Formula = "=IF(RC[-52]="""","""",VLOOKUP(RC[-52],Aralık!C[-51]:C[-16],36,0))"
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic  
End Sub

Fakat D sütunu için gereken makroyu, makro kaydet yöntemi ile başaramadım. Kaydedilemiyor diye hata mesajı veriyor. Belki dinamik alan tanımlaması ile yapılabilir diye düşünüyorum ama nasıl yapılacağını bilmiyorum.

D sütununa D2 hücresinden başlayarak yazılacak formül;
Kod:
=EĞER(H2="";"";((H2+J2+K2+L2+N2+O2+P2+R2+S2+T2+V2+W2+X2+Z2+AA2+AB2+AD2+AE2+AF2+AH2+AI2+AJ2+AL2+AM2+AN2+AP2+AQ2+AR2+AT2+AU2+AV2+AX2+AY2+AZ2+BB2+BC2+BD2)-(I2+M2+Q2+U2+Y2+AC2+AG2+AK2+AO2+AS2+AW2+BA2)))
 
Bu işini görürmü

Cells(2, "d").Value = "=IF(RC[4]="""","""",((RC[4]+RC[6]+RC[7]+RC[8]+RC[10]+RC[11]+RC[12]+RC[14]+RC[15]" & _
"+RC[16]+RC[18]+RC[19]+RC[20]+RC[22]+RC[23]+RC[24]+RC[26]+RC[27]+RC[28]+RC[30]+RC[31]+RC[32]+RC[34]+RC[35]" & _
"+RC[36]+RC[38]+RC[39]+RC[40]+RC[42]+RC[43]+RC[44]+RC[46]+RC[47]+RC[48]+RC[50]+RC[51]+RC[52])-(RC[5]+RC[9]" & _
"+RC[13]+RC[17]+RC[21]+RC[25]+RC[29]+RC[33]+RC[37]+RC[41]+RC[45]+RC[49])))"
 
D2 hücresine bu formülü uygulasan olurmu

=EĞER(H2="";"";((H2+TOPLA(J2:BD2))-(I2+((M2+Q2+U2+Y2+AC2+AG2+AK2+AO2+AS2+AW2+BA2)*2))))


Cells(2, "d").Value = "=IF(RC[4]="""","""",((RC[4]+SUM(RC[6]:RC[52]))-(RC[5]+((RC[9]+RC[13]+RC[17]+RC[21]+RC[25]+RC[29]+RC[33]+RC[37]+RC[41]+RC[45]+RC[49])*2))))"
 
Teşekkür ederim Halit hocam her iki çözüm yönteminizde problemi çözdü. İkinci çözümünüz daha güzel olduğu için onu kullandım.
Tekrar teşekkür ederim.
Çalışmamın son halini ekliyorum, emeği geçen herkese teşekkür ediyorum.
 

Ekli dosyalar

Son düzenleme:
Teşekkür ederim Halit hocam her iki çözüm yönteminizde problemi çözdü. İkinci çözümünüz daha güzel olduğu için onu kullandım.
Tekrar teşekkür ederim.
Çalışmamın son halini ekliyorum, emeği geçen herkese teşekkür ediyorum.

iyi çalışmalar
 
Teşekkür ederim Halit hocam her iki çözüm yönteminizde problemi çözdü. İkinci çözümünüz daha güzel olduğu için onu kullandım.
Tekrar teşekkür ederim.
Çalışmamın son halini ekliyorum, emeği geçen herkese teşekkür ediyorum.

Dosya Açılmıyor maalesef.
 
Çalışmanın yeni versiyonu ektedir.
Programın verdiği hatayı da belirtirseniz çözüm yolu gösterilebilir.
Compile error:
Method or data member not found şeklinde bir hata alıyorsanız Userform1'e bir adet listwiev ekleyiniz.
 

Ekli dosyalar

Çalışmanın yeni versiyonu ektedir.
Programın verdiği hatayı da belirtirseniz çözüm yolu gösterilebilir.
Compile error:
Method or data member not found şeklinde bir hata alıyorsanız Userform1'e bir adet listwiev ekleyiniz.

Selamlar,
Sadece kodlara baktım ,çok güzel bir çalışma olmuş,bendeki arıza önce tarih veya lisans süresi gibi birşeyden kaynaklanıyordu galiba.Sonra initialize de (sat= i.....) satırını hata olarak veriyordu.
İkincisi de keşke çantayı değiştirseydiniz.Çanta olmamış.(Sağ.Bak.Logosu olabilir,Eczane E si olabilir.)
(Yıllardır ambulanslarımızda saçma sapan misyonerlik de dahil olmak üzere bir sürü işaretler vardı ki ne menem bişi oldukları belli olmuyordu.Neredeyse Sağlık Bakanlığındaki ambulanslarda bile yer yer rastlandığı olmuştu, Haç içine tıp logosu konmuş (özellikle) ambulanslar kullanılıyordu,Şükür ki şimdi yok,akıl edip de bu ince detayı dahi bir standarda soktular şimdi.Emeği geçenlere de teşekkür.O yüzden dedim,o çantanın bizim tıp literatürümüzde yeri hiç olmadı.
Hilal olsa neyse....
Selamlar,


Dosyayı açılabilir şekilde görebilmek mümkün mü bilmiyorum.

O yüzden de çantanızı
 
Geri
Üst