V

Çözüldü Belirli Kritere Göre Yazıcıya Seri Dosya Gönderme

  • Konuyu başlatan Konuyu başlatan vurkan
  • Başlangıç tarihi Başlangıç tarihi
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

vurkan

Normal Üye
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Arkadaşlar Merhaba.
e okul'dan excele aktarılan verilerden oluşan bir ÖĞRENCİ PROGRAMI dosyam var. Bu dosyadan değişik kriterlere göre veri yazdırıyorum. Her şey tamam.

Yalnız;

1) YAZICI isimli ana sayfamdaki L4 hücresine yazdığım öğrenci numarasını DİŞ FORMU sayfasında AF96 nolu hücreye ve İŞİTME FORMU isimli dosyada K90 nolu hücreye yazdırarak;

Sub Diş_Formu_Yazdır()
Dim ws1 As Worksheet: Set ws1 = Sheets("YAZICI")
Dim ws2 As Worksheet: Set ws2 = Sheets("DİŞ FORMU")
ws2.[AF96] = ws1.[L4]
ws2.PrintOut
Application.Wait (Now + TimeValue("0:00:01"))
End Sub

Kodu ile çıktı alıyorum. Ancak L4 Hücresine yazdığım numara VERİ sayfasında olmasa bile formu yazdırıyor. Bunun için istediğim şey L4 hücresine VERİ sayfasında olmayan bir öğrenci numarası yazılınca Bu numaralı öğrenci yoktur uyarısı versin ve yazıcıya göndermesin.

2) Sınıf bazında DİŞ FORMU ve İŞİTME FORMU almak için iki düğme ekledim. Ama onlar için uygun kod oluşturamadım.
Yapmak istediğim YAZICI isimli ana sayfamdaki L4 hücresine mesela 3D yazdığım zaman VERİ isimli sayfadaki 3D sınıfına giden öğrencilerin numaralarını DİŞ FORMU sayfasında AF96 nolu hücreye ve İŞİTME FORMU isimli dosyada K90 nolu hücreye yazdırarak çıktı alabileceğim ayrı ayrı iki kod yazılması. Saygılar sunuyorum.
 

Ekli dosyalar

2) Sınıf bazında DİŞ FORMU ve İŞİTME FORMU almak için iki düğme ekledim. Ama onlar için uygun kod oluşturamadım.
Yapmak istediğim YAZICI isimli ana sayfamdaki L4 hücresine mesela 3D yazdığım zaman VERİ isimli sayfadaki 3D sınıfına giden öğrencilerin numaralarını DİŞ FORMU sayfasında AF96 nolu hücreye ve İŞİTME FORMU isimli dosyada K90 nolu hücreye yazdırarak çıktı alabileceğim ayrı ayrı iki kod yazılması. Saygılar sunuyorum.
Af96 hücresi konusunda bağlantı kuramadım. Hangi veriler tam olarak nereye gelecek?
 
Merhaba Sayın cakarem

AF96 yukarıda ekli dosyanın DİŞ FORMU sayfasında Yazıcıya göndermeden önce otomatik değişmesini istediğim hücre. Veri sayfasındaki öğrenci numaraları YAZICI sayfasındaki L4 hücresine yazılan sınıf bilgisine göre sırayla DİŞ FORMU!AF96 hücresine yazılıp yazıcıya gönderilecek. Bu sayfadaki Öğrencilere ait diğer bilgiler VERİ sayfasından İNDİS KAÇINCI formülüyle DİŞ FORMU!AF96 hücresine göre alınıyor.

Diyelim ki YAZICI!L4 hücresi 1A olsun Yazdır dediğim zaman VERİ sayfasında B:B sütununda 1A olan tüm öğrencilerin okul numaraları C:C sütunundan sırayla DİŞ FORMU!AF96 hücresine yazdırılıp her öğrenci için ayrı ayrı çıktı alınacak. Saygılar.
 
Arkadaşlar konu hala güncel. Sayın Ömer Baran Üstadın başka bir dosyam için hazırladığı kodu bu dosyama uyarlamaya çalıştım ama tam istediğim gibi olmadı. Kodun dosyama uygun hale gelmesi için nasıl bir değişiklik yapmalıyım.

Sub SINIF_DİŞ_ÖN_YAZDIR()
Application.ScreenUpdating = False
For sat = 3 To Sheets("YAZICI").Cells(Rows.Count, "S").End(3).Row
If Sheets("YAZICI").Cells(sat, "S") <> "" Then
Sheets("DİŞ FORMU ÖN").[AF24] = Sheets("YAZICI").Cells(sat, "S")
Sheets("DİŞ FORMU ÖN").PrintOut Copies:=1
Application.Wait (Now + TimeValue("0:00:01"))
adet = adet + 1
End If
Next
Application.ScreenUpdating = True
MsgBox adet & " öğrenci için DİŞ FORMU sayfası yazdırıldı.", , "..:: Ömer BARAN ::.."
End Sub

Bu kodla;

YAZICI isimli sayfamın L4 hücresine yazdığım sınıfın Öğrenci numaralarını

=EĞER(SATIR(B1)>EĞERSAY(VERİ!$B$1:$B$2000;$L$4);" ";İNDİS(VERİ!C$1:C$2000;KÜÇÜK(EĞER(VERİ!$B$1:$B$2000=$L$4;SATIR(A$1:A$1999));SATIR(B1))))

Formülüyle YAZICI sayfasının S3 ten itibaren S50 aralığında sıralattım.

Daha sonra S sütunundaki öğrenci numaralarını Sheets("DİŞ FORMU ÖN").[AF24] = Sheets("YAZICI").Cells(sat, "S") DİŞ FORMU ÖN sayfasının AF24 hücresine göndererek yazdırdım. ancak.

1A sınıfı 34 kişi olmasına rağmen formül olan kalan hücreleri de boş olarak yazıcıya gönderdi. ŞİMDİ:

YAZICI sayfasındaki L4 hücresinde yazan sınıf adını VERİ sayfasında B sütununda bulup ona göre C sütunundaki numaraları Sheets("DİŞ FORMU ÖN").[AF24] hücresine gönderecek kod nasıl olmalı?

Veya olmuyorsa yukarıdaki kodun formül olan tüm hücreleri değilde sadece numara olan hücreleri göndermesi için nasıl bir değişiklik gerekiyor. Saygılar.
 
Arkadaşlar Merhaba Ömer üstadın katkılarıyla yazdırma problemim halledildi. Dosyaya ilgi gösteren bilgi ve emeğini esirgemeyen tüm arkadaşlara teşekkür ediyorum. İlgilenenler için çözüm kodlar:

Sub SINIF_DİŞ_ÖN_YAZDIR()
Application.ScreenUpdating = False
For sat = 2 To Sheets("YAZICI").[K4] + 1
If Sheets("YAZICI").Cells(sat, "S") <> "" Then
Sheets("DİŞ FORMU ÖN").[AF24] = Sheets("YAZICI").Cells(sat, "S")
'Sheets("DİŞ FORMU ÖN").PrintPreview
Sheets("DİŞ FORMU ÖN").PrintOut Copies:=1
Application.Wait (Now + TimeValue("0:00:01"))
adet = adet + 1
End If
Next
Application.ScreenUpdating = True
MsgBox adet & " öğrenci için DİŞ FORMU sayfası yazdırıldı.", , "..:: Ömer BARAN ::.."
End Sub

SAYGILAR
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst