Verdiğim cevaptaki çalışma sistemi şöyle (istek bu diye anlamıştım) ;
-- H sütunundaki BİRİM bilgileri benzersiz olarak BA sütununa yazdırılır,
-- BA sütununa yazdırılan BİRİM bilgileri için tek tek döngü kurulur ve H sütunu (sütun no 8) filtrelenir,
-- J sütununu BOŞ olanlar diye filtrelenir.
Filtre (ler) sonucunda KALAN veri satırı varsa yazıcıya gönderilir (burada bir sorun görmüyorum) .
Kodlama tekniği bakımından düzeltilmesinde yarar olan tek şey;
.Range("$A$4:$J$" & sonA).AutoFilter Field:=10, Criteria1:="="
satırını sonBA = .... satırıyla For ba = 2 To sonBA satırının arasına taşımak olabilir.
CheckBox ile PASİF işareti koymakla ilgili sorun şu;
durum çift tıklamayla X yazdırmak gibi değil, çünkü X yazdırırken Listview'de bir satır seçili hale gelmiş oluyor,
dolayısıyla X yazılacak veri satırı SEÇİLİ OLAN diye bulunabiliyor.
Oysa CheckBox'a tıklama ile PASİF işareti koyulacağında, "hangi satıra sorusunun" cevabı açıkta kalıyor.
Diyelim bu durum halledildi, yani listeden seçim yapıldı ve CheckBox tıklandı.
İyi de işaretin koyulup koyulmadığını userformdaki Listview üzerinde göremeyeceksiniz.
Çünkü o sütun Listview listesine dahil değil. Yani X koymakla durum aynı değil.
İşte bu nedenle, daha evvel yazdığım cevaplardan birinde tüm kodların elden geçirilmesinin gerekebileceğini belirtmiştim.