• DİKKAT

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

Seri olarak yazdırma makrosu..

Katılım
9 Mayıs 2005
Mesajlar
404
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
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?
 
Kod:
say = Sheets("lst").[a65536].End(3).Row 'son öğr. sırası
For a = 1 To say
    Application.Run "Belge_yaz"
Next
 
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ı.
 
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...
 
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...
 
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.
 
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..........
 
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]
 
Sayın arkadaşım hakkını helal et.Sana epey iş çıkardım..Eline, yüreğine sağlık... :ok::
 
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.
 
Geri
Üst