@rasit
1) Son Dolu Hücre - İlk Boş Hücre
sonsatir = Thisworkbook.Sheets("STOK").Cells(Rows.Count,1).End(3).Row
bu satırın anlamı tam olarak şöyle:
- son dolu satır kontrolü A sütununa göre yapılıyor >> Cells(Rows.Count,1) >> 1 numaralı sütun.
- Cells(Rows.Count,1).End(3).Row >> A sütununda son hücreye (excel versiyonuna göre A1048576 veya A65536 hücresi)
gidip CTRL+YUKARI OK tuşuna basma işleminin VBA karşılığıdır. Son hücreyi seçip elle CTRL+YUKARI OK tuşuna basarak sonucu görün.
Bu işlem sizi A sütununda aşağıdan YUKARI DOĞRU İLK DOLU HÜCREye götürür, .End(3).Row kısmı bu işte.
Bu durumda; ilk boş hücre yukarıda bulunan hücrenin bir altındaki hücre olduğuna göre yukarıdaki kodun sonuna +1 eklenmesi yeterli demektir.
Kodda sonsatir = ..... satırı varsa ilkboshucre = sonsatir + 1 olur.
Kodda sonsatir = ..... satırı yoksa ilkboshucre = Cells(Rows.Count,1).End(3).Row + 1 olur.
2) Koddaki +2 ne anlama geliyor?
Listbox nesnesinin ilk satırının index değeri 0 'dır ve sonraki satırlarda 1'er artarak devam eder.
Bu nedenle önce; eğer listboxta hiçbir satır seçili değilse bu index değeri -1 olur.
If lstsepet.ListIndex < 0 Then Exit Sub >> Iistboxta seçim yapılmamışsa İŞLEM YAPMADAN ÇIK demişim.
Bu listboxun kaynağı SEPET sayfası olduğuna, başlık satırı listboxa dahil edilmediğine (+1)
ve listboxta index değerleri 0'dan başladığına (+1) göre;
listboxta seçilen bir satırın SEPET sayfasındaki SATIR NUMARASI karşılığı Listbox.ListIndex + 2 demektir.
sepetsatir = lstsepet.ListIndex + 2 ile ÇIKARTılacak satır numarası tespit edildiğine göre;
ThisWorkbook.Sheets("SEPET").Range("A" & sepetsatir & ":G" & sepetsatir).Delete Shift:=xlUp şeklinde bu satır silinir.
Kolay gelsin.