Seri olarak yazdırma makrosu..

aliakgul

Altın Üye
Katılım
9 Mayıs 2005
Mesajlar
402
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
03-08-2025
Kod:
    a = [veri1!c26]
    b = [lst!a1]
    If b < a Then
    Application.Run "Belge_yaz"
    Range("a1").Value = Range("a1").Value + 1
Selam arkadaşlar,
Yukarda verdiğim kodlarla karne yazdırıyorum. Her tıklamada yazdırma işlemi yapılıyor ve b'nin değeri bir arttırılıyor, yani bir sonraki öğrenciye geçiliyor; ta ki, son öğrenciye kadar...
Benim öğrenmek istediğim şu:
Burada her tıklamada yazdırma işlemi ve b'nin değer artışı bir kere yapılıyor.Ben bir tıklama ile a=b olana kadar yazdırma ve b'nin değer artışını otomatikleştirebilir miyim?
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,334
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Kod:
say = Sheets("lst").[a65536].End(3).Row 'son öğr. sırası
For a = 1 To say
    Application.Run "Belge_yaz"
Next
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
Karne proğramının hangi mantık üzerine inşa edildiği bilinmediği için, sadece bir fikir ileri sürebilirim. Bir açılan liste ve düşeyara ile, her yeni isim seçildiğinde aynı anda yazdır kodları çalıştırılıp, fazla tıklamaya mahal verilmeden teker teker yazılırdı.
 

Metin Karaağaç

Uzman
Altın Üye
Katılım
25 Aralık 2004
Mesajlar
1,793
Excel Vers. ve Dili
Office 2016 Pro Plus-Türkçe
Altın Üyelik Bitiş Tarihi
10-12-2025
Seyit Tiken' Alıntı:
Karne proğramının hangi mantık üzerine inşa edildiği bilinmediği için, sadece bir fikir ileri sürebilirim. Bir açılan liste ve düşeyara ile, her yeni isim seçildiğinde aynı anda yazdır kodları çalıştırılıp, fazla tıklamaya mahal verilmeden teker teker yazılırdı.
benim verdiğim linki incelerseniz;
tek tıklama ile bütün öğrencilerin karnesi yazdırabilir.
Kodlar için Sn. Leventm'ye teşekkürler...
 

aliakgul

Altın Üye
Katılım
9 Mayıs 2005
Mesajlar
402
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
03-08-2025
Arkadaşlar,
Örnek dosya ekte. Karne Yaz düğmesine tıkladığımda karne yazılıyor ve bir sonraki öğrencinin verileri aktarılıyor. Bu işlem her tıklamada bir defa yapılıyor. Benim yapmaya çalıştığım ise; bu işlemin a=b olana kadar, tek tıklama ile sürdürülmesi...
 
Katılım
7 Temmuz 2004
Mesajlar
327
Excel Vers. ve Dili
office xp pro türkçe
Sayın Hocam aliakgul,
Aşağıdaki kodlamayı bir denersiniz. deneme imkanı olmadı ama sanırım istediğiniz gerçekleşti.

ifadelerinizden karnelerin bir kısmını yazdırdığınızı çıkarıyorum eğer bu doğru ise
LST SAYFASINDAKİ LİSTBOXTAN EN SON KALDIĞINIZ ÖĞRENCİYİ seçip karne yazdır butonuna tıklayın.

Kod:
Sub Düğme45_Tıklat()
    a = [veri1!c26]
    b = [lst!a1]
    Debug.Print a
    'c = Sayfa8.Range("a1").Value
    For c = Sayfa8.Range("a1").Value To a
    If b < a Then
    Application.Run "Belge_yaz"
    End If
    If b = a Then
    Application.Run "Belge_yaz"
       End If
       Range("a1").Value = Range("a1").Value + 1
     Debug.Print c
   Next
End Sub
Saygılar Sevgiler.
Çalışmalarınızda Başarılar Dilerim.
 

aliakgul

Altın Üye
Katılım
9 Mayıs 2005
Mesajlar
402
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
03-08-2025
Sevgili Abdi,
Teşekkür ederim.Kodların işe yarıyor. Karne yazdırma sıkıntım yok,o defteri kapattık Allaha şükür. (En azından bu yıllık) :wink:
Ben bu çalışmayı tam anlamıyla kullanışlı bir hale getirmeye çalışıyorum. Eğer olursa, önümüzdeki öğretim yılında okul programlarını bırakıp bunu kullanacağız.
Bu da ancak excel.web.tr camiasının sayesinde olacak...
Bir ricam olacak; şimdi bu kodlar YAZ VE ARTTIR döngüsünü sağlıyor, ta ki, a=b olana kadar...Buraya kadar tamam ama a=b durumunda ARTTIR VE YAZ değil sadece YAZ uygulasın. Türkçesi; toplam öğrenci sayısı 63 ise son öğrencinin karnesi yazıldıktan sonra (A1) değeri 64 yapılmasın...
b<a ise YAZ VE ARTTIR
b=a ise YAZ
Tekrar teşekkür ederim..........
 
Katılım
7 Temmuz 2004
Mesajlar
327
Excel Vers. ve Dili
office xp pro türkçe
Hocam o zaman revize edilmiş kod aşağıdadır

tekrar bi deneyin
[vb:1:5af45b3030]Sub Düğme45_Tıklat()
Application.ScreenUpdating = False
a = [veri1!c26]
b = [lst!a1]
Debug.Print a
For c = Sayfa8.Range("a1").Value To a
If b < a Then
Application.Run "Belge_yaz"
Range("a1").Value = Range("a1").Value + 1

End If
If b = a Then
Application.Run "Belge_yaz"

End If
Debug.Print c
Next
Application.ScreenUpdating = True
Sayfa8.Range("a1").Value = a
End Sub
[/vb:1:5af45b3030]
 

aliakgul

Altın Üye
Katılım
9 Mayıs 2005
Mesajlar
402
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
03-08-2025
Sayın arkadaşım hakkını helal et.Sana epey iş çıkardım..Eline, yüreğine sağlık... :eek:k::
 
Katılım
7 Temmuz 2004
Mesajlar
327
Excel Vers. ve Dili
office xp pro türkçe
Rica ederim Hocam helal olsun
Sizin gibi bir "hocamıza" ÖĞRETMENİMİZE yardımcı olabildim ise ne mutlu bana

Atamızın bir Sözü ile
ÖĞRETMENLER YENİ NESİL SİZİN ESERİNİZ OLACAKTIR.
Mustafa Kemal Atatürk


Saygılar Sunar
Çalışmalarınızda Başarılar Dilerim.
 
Üst