Çözüldü Listview de silme butonu hakkında

Cengizhan

Normal Üye
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
merhaba üstatlarım bir ricam olacaktı
dosyada listvievdeki verilerin birine tıklatınca command butonu ile silmek istiyorum ama id no yada index no vermeden direk seçip sil deyince hem listeden hemde sayfadan silmesini istiyorum
 

Ekli dosyalar

Çözüm
Sayın @Cengizhan .

Textbox'u kullanarak ARAMA yapıldığında Listview içeriği filtreleniyor.
Bu durumda ilgili satırın, Excel sayfasındaki hangi satırdaki veri olduğu nasıl anlaşılacak.
ID/INDEX no gibi benzersizlik garantisini sağlayacak ve sayfa ile Listview satırı arasındaki ilişkiyi kuracak şey ne olacak o zaman ?

ARAMA işlemi yapmadan tüm liste Listview nesnesinde görünüyorken ve sıralama gibi işlem de yoksa mesele değil.
Ancak daha sonra bu tür durumlar oluştuğunda sorun yaşarsınız.

Listede benzersizlik garantisi varsa SORGU yapalmışsa da birşeyler yapılabilir.
Yani satırlardaki (bütün olarak) veriler TEKİL midir? Mükerrer satır olma ihtimali var mıdır?

Herneyse; sorgu uygulanmadan SİLME işlemi istiyorsanız aşağıdaki...
Dosyanızı incelemedim ama, index numarası vs işlemi yapmadan buton aracılığıyla sildirme yapmak isterseniz, ListView click olayında, ilgili verinin olduğu satırı seçtirin.

ListView'de bu seçim sağlandıktan sonra, ActiveCell.EntireRow.Delete kodu işinizi görecektir.
 
Evet siler. Ama burada önemli olan click ya da dbclick olayında sayfada ilgili verinin olduğu yeri seçtirmek.
Silmek istenilen veri ListView'den seçildiğinde, sayfadaki yeride seçilmiş olacak arka planda..
Verdiğim kodda, aktif hücrenin tüm satırının silinmesi işlevini yerine getirecektir.

Siz ListView'den seçim yaptırmaz, direk bu kodu butona atarsanız; o anda sayfada hangi hücre aktifse, o hücrenin yer aldığı satır silinir, dikkat edin.
 
anladım hocam listboxda yapabiliyorumda demek listvievde olmuyor teşekkür ederim aslında bi kod var listboxda işe yarıyor yazsam buraya listviewe uyarlayabilirmiyiz ?
Kod:
İçeriği görüntülemek için giriş yapmalısınız
(9 satır)
 
  • Beğen
Tepkiler: ysb
ListBox'ta da olmaz. Bir hücrenin yer aldığı referansı göstermeden nesnenin kendisinden silme bekleyemezsiniz ki.
Verdiğiniz kodlarda zaten bu arama işlevi yapılmakta ve ilgili satır bulunduktan sonra silmek gerçekleşmekte.

Kod:
İçeriği görüntülemek için giriş yapmalısınız
(1 satır)

A:I aralığında verilerin olduğu bir tablodan ListView'e aktarım yapıldığını düşünün.
Üstteki kodda yer alan SubITems(8) değeri, ilgili satır numarasını vermektedir. Yani verilerin bittiği sütunun hemen bir sonraki alanının belirtilmesi.

Siz bu işlemi yaptırıp, ilk verdiğim kod ile silme yapabilirsiniz. Ya da kodu aşağıdaki gibi revize ederseniz, sayfadan seçim yaptıramamadan direk silme işlemide yaptırabilirsiniz.

Kod:
İçeriği görüntülemek için giriş yapmalısınız
(1 satır)

Yani işin özeti, bu iş mutlaka verinin doğru olarak bir şekilde bulunmasından geçer. Siz eğer birden fazla veriyi tek bir komutla silmek isterseniz, o zaman verdiğiniz koddaki gibi bir döngü yapmanız lazım.

Şu anda dosya indirmek ve uyarlamak için müsait değilim ama verdiğim yapıdan yola çıkabilirsiniz diye düşünüyorum.
 
  • Beğen
Tepkiler: ysb
Sayın @Cengizhan .

Textbox'u kullanarak ARAMA yapıldığında Listview içeriği filtreleniyor.
Bu durumda ilgili satırın, Excel sayfasındaki hangi satırdaki veri olduğu nasıl anlaşılacak.
ID/INDEX no gibi benzersizlik garantisini sağlayacak ve sayfa ile Listview satırı arasındaki ilişkiyi kuracak şey ne olacak o zaman ?

ARAMA işlemi yapmadan tüm liste Listview nesnesinde görünüyorken ve sıralama gibi işlem de yoksa mesele değil.
Ancak daha sonra bu tür durumlar oluştuğunda sorun yaşarsınız.

Listede benzersizlik garantisi varsa SORGU yapalmışsa da birşeyler yapılabilir.
Yani satırlardaki (bütün olarak) veriler TEKİL midir? Mükerrer satır olma ihtimali var mıdır?

Herneyse; sorgu uygulanmadan SİLME işlemi istiyorsanız aşağıdaki kodu kullanabilirsiniz.

VBA:
İçeriği görüntülemek için giriş yapmalısınız
(7 satır)
 
  • Beğen
Tepkiler: ysb
Çözüm
ListBox'ta da olmaz. Bir hücrenin yer aldığı referansı göstermeden nesnenin kendisinden silme bekleyemezsiniz ki.
Verdiğiniz kodlarda zaten bu arama işlevi yapılmakta ve ilgili satır bulunduktan sonra silmek gerçekleşmekte.

Kod:
İçeriği görüntülemek için giriş yapmalısınız
(1 satır)

A:I aralığında verilerin olduğu bir tablodan ListView'e aktarım yapıldığını düşünün.
Üstteki kodda yer alan SubITems(8) değeri, ilgili satır numarasını vermektedir. Yani verilerin bittiği sütunun hemen bir sonraki alanının belirtilmesi.

Siz bu işlemi yaptırıp, ilk verdiğim kod ile silme yapabilirsiniz. Ya da kodu aşağıdaki gibi revize ederseniz, sayfadan seçim yaptıramamadan direk silme işlemide yaptırabilirsiniz.

Kod:
İçeriği görüntülemek için giriş yapmalısınız
(1 satır)

Yani işin özeti, bu iş mutlaka verinin doğru olarak bir şekilde bulunmasından geçer. Siz eğer birden fazla veriyi tek bir komutla silmek isterseniz, o zaman verdiğiniz koddaki gibi bir döngü yapmanız lazım.

Şu anda dosya indirmek ve uyarlamak için müsait değilim ama verdiğim yapıdan yola çıkabilirsiniz diye düşünüyorum.
Ben deneyim bakalım ☺️
Sayın @Cengizhan .

Textbox'u kullanarak ARAMA yapıldığında Listview içeriği filtreleniyor.
Bu durumda ilgili satırın, Excel sayfasındaki hangi satırdaki veri olduğu nasıl anlaşılacak.
ID/INDEX no gibi benzersizlik garantisini sağlayacak ve sayfa ile Listview satırı arasındaki ilişkiyi kuracak şey ne olacak o zaman ?

ARAMA işlemi yapmadan tüm liste Listview nesnesinde görünüyorken ve sıralama gibi işlem de yoksa mesele değil.
Ancak daha sonra bu tür durumlar oluştuğunda sorun yaşarsınız.

Listede benzersizlik garantisi varsa SORGU yapalmışsa da birşeyler yapılabilir.
Yani satırlardaki (bütün olarak) veriler TEKİL midir? Mükerrer satır olma ihtimali var mıdır?

Herneyse; sorgu uygulanmadan SİLME işlemi istiyorsanız aşağıdaki kodu kullanabilirsiniz.

VBA:
İçeriği görüntülemek için giriş yapmalısınız
(5 satır)
Tamam hocam çok teşekkür ederim ☺️
 
  • Beğen
Tepkiler: ysb
Sayın @Cengizhan .

Textbox'u kullanarak ARAMA yapıldığında Listview içeriği filtreleniyor.
Bu durumda ilgili satırın, Excel sayfasındaki hangi satırdaki veri olduğu nasıl anlaşılacak.
ID/INDEX no gibi benzersizlik garantisini sağlayacak ve sayfa ile Listview satırı arasındaki ilişkiyi kuracak şey ne olacak o zaman ?

ARAMA işlemi yapmadan tüm liste Listview nesnesinde görünüyorken ve sıralama gibi işlem de yoksa mesele değil.
Ancak daha sonra bu tür durumlar oluştuğunda sorun yaşarsınız.

Listede benzersizlik garantisi varsa SORGU yapalmışsa da birşeyler yapılabilir.
Yani satırlardaki (bütün olarak) veriler TEKİL midir? Mükerrer satır olma ihtimali var mıdır?

Herneyse; sorgu uygulanmadan SİLME işlemi istiyorsanız aşağıdaki kodu kullanabilirsiniz.

VBA:
İçeriği görüntülemek için giriş yapmalısınız
(7 satır)
ömer hocam tam istediğim gibi oldu çok sağolun ikinizede çok teşekkür ederim
 
  • Beğen
Tepkiler: ysb
Yanlış anlamayın ama belgenize her baktığımda Personeller kelimesi gözüme çarpıp duruyor.
Personel sözcüğünin kendisi ÇOĞUL. o nedenle PERSONEL demek daha doğru olur.

Bu da benim huyum. İdare edersiniz artık. ;)

.
 
Koda bir koşul eklemiştim.
Sayfayı yenileyerek kodu tekrar kontrol edin.

Yanlış anlamayın ama belgenize her baktığımda Personeller kelimesi gözüme çarpıp duruyor.
Personel sözcüğünin kendisi ÇOĞUL. o nedenle PERSONEL demek daha doğru olur.

Bu da benim huyum. İdare edersiniz artık. ;)

.
Estağfurullah Ömer hocam evet öyle ama sadece örnek amaçlı öle dikkat ederek yazmadım ☺️ hepinizden Allah razı olsun formumuz çok güzel hemen yardım ediliyor bir Excel meraklısı olarak çok geç kalmışım bu forma üye olmaya
 
Eyvallah, sağ olunuz.

Memnuniyetinizi;
-- çevrenizdeki Excel kullanıcılarını forumumuzdan haberdar edip, üye olmalarını salık vererek,
-- mümkün olduğunca sık ve uzun süreli çevrimiçi kalarak,
-- tüm sosyal medya kanallarında forumumuzdan bahisle link vererek
gösterirseniz daha da memnun oluruz.

.
 
@Ömer BARAN hocam kod minicik bi hata oldu en listviewde en son satırı seçince onu silmiyor sonun bi üstündekini siliyor sadece bu hata var düzeltebilirmiyiz acaba bi yolu varmı
Kod:
İçeriği görüntülemek için giriş yapmalısınız
(8 satır)
 
  • Beğen
Tepkiler: ysb
Konuyu başlatan
Normal Üye
Katılım
Konu Bilgi
Durum
Çözüldü 
Forum
Excel Makro Soruları
Başlangıç tarihi
Son yanıt tarihi
Cevaplar
18
Üst