• DİKKAT

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

Yazdır butonu oluşturmak

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Katılım
19 Temmuz 2009
Mesajlar
59
Excel Vers. ve Dili
2003 - türkçe
Sayfa1'deki "Yazdır" butonuna basıldığında:
1. Sayfa1'de var olan A1:A47 aralığındaki formun çıktısını alacak,
2. Eğer Sayfa1'deki P11<=25 ise Sayfa2'deki A1:A39 aralığındaki formun çıktısını alacak,
3. Eğer Sayfa1'deki P11>25 ise önce Sayfa2'deki A1:A39 aralığındaki formun çıktısını alacak sonra yine Sayfa2'deki A40:A78 aralığındaki formun çıktısını alacak

bir makro yazar mısınız?
 
Mantık hatası yapıyor gibi geliyor bana.Bu durumda P11 hücresi büyükte küçükte olsa 25 ten,A11:A39 aralığı yazacaktır.İsterseniz siz koda müdahale ederek yazdırma alanını değeiştrebilirsiniz.Kodlar aşağıdadır.:cool:
Kod:
Sub yazdir()
If MsgBox("Yadırmak İstiyormusunuz?", vbYesNo, "YAZDIR") = vbNo Then Exit Sub
Sheets("Sayfa1").PageSetup.PrintArea = "Sayfa1!A1:A47"
Sheets("Sayfa1").PrintOut
If Sheets("Sayfa1").Range("P11").Value <= 25 Then
    Sheets("Sayfa1").PageSetup.PrintArea = "Sayfa1!A1:A39"
    Else
    Sheets("Sayfa1").PageSetup.PrintArea = "Sayfa1!A1:A39"
End If
Sheets("Sayfa1").PrintOut
End Sub
 
Öncelikle çok teşekkür ederim cevabınız için.
Ben kodu istediğim şekilde aşağıdaki gibi değiştirdim:

Sub yazdir()
If MsgBox("Yazdırmak istiyor musunuz?", vbYesNo, "YAZDIR") = vbNo Then Exit Sub
Sheets("TuruncuForm1").PageSetup.PrintArea = "TuruncuForm1!A1:K47"
Sheets("TuruncuForm1").PrintOut
If Sheets("TuruncuForm1").Range("P11").Value <= 25 Then
Sheets("TuruncuForm2").PageSetup.PrintArea = "TuruncuForm2!A1:J39"
Else
Sheets("TuruncuForm2").PageSetup.PrintArea = "TuruncuForm2!A1:J78"
End If
Sheets("TuruncuForm2").PrintOut
End Sub

Fakat bir sorun var. P11 hücresindeki değer 25'ten küçük de olsa büyük de olsa A1:J78 aralığını yazdırıyor. Anlayamadım. Yardımınız için çok teşekkür ederim. İyi günler.
 
Öncelikle çok teşekkür ederim cevabınız için.
Ben kodu istediğim şekilde aşağıdaki gibi değiştirdim:

Sub yazdir()
If MsgBox("Yazdırmak istiyor musunuz?", vbYesNo, "YAZDIR") = vbNo Then Exit Sub
Sheets("TuruncuForm1").PageSetup.PrintArea = "TuruncuForm1!A1:K47"
Sheets("TuruncuForm1").PrintOut
If Sheets("TuruncuForm1").Range("P11").Value <= 25 Then
Sheets("TuruncuForm2").PageSetup.PrintArea = "TuruncuForm2!A1:J39"
Else
Sheets("TuruncuForm2").PageSetup.PrintArea = "TuruncuForm2!A1:J78"
End If
Sheets("TuruncuForm2").PrintOut
End Sub

Fakat bir sorun var. P11 hücresindeki değer 25'ten küçük de olsa büyük de olsa A1:J78 aralığını yazdırıyor. Anlayamadım. Yardımınız için çok teşekkür ederim. İyi günler.

ikinci bir seçenek olmadığı için olabilirmi acaba. kodda 1.sayfadaki şu hücre aralığını yazdır diyor ama şu hücre 25'ten küçükse 2.sayfadakini yazdır diyor. bu formulü yaparken büyükse şunu, küçükse şunu yaz gibi olması gerekir bence.
 
sn evrende belirtmiş yeni gördüm her durumda aynı yeri yazdırır diye.

Sheets("TuruncuForm1").PageSetup.PrintArea = "TuruncuForm1!A1:K47"
Sheets("TuruncuForm1").PrintOut

kodları yok saydırıp koduda biraz uzatarak aşağıdaki gibi bir ekleme daha yaparsanız istediğiniz olur sanırım. emin olmayarak konuşuyorum kusura bakmayın pek bilgim yok benimde. deneme yanılmayla kendi işlerimi yapmaya çalışıyorum

If Sheets("......").Range("P11").Value >= 25 Then
Sheets("....").PageSetup.PrintArea = "........."
Else
Sheets("........").PageSetup.PrintArea = "........"
End If
Sheets(".......").PrintOut
 
Son düzenleme:
Sayfa1'deki "Yazdır" butonuna basıldığında:
1. Sayfa1'de var olan A1:A47 aralığındaki formun çıktısını alacak,
2. Eğer Sayfa1'deki P11<=25 ise Sayfa2'deki A1:A39 aralığındaki formun çıktısını alacak,
3. Eğer Sayfa1'deki P11>25 ise önce Sayfa2'deki A1:A39 aralığındaki formun çıktısını alacak sonra yine Sayfa2'deki A40:A78 aralığındaki formun çıktısını alacak

bir makro yazar mısınız?

Mantık hatası yapıyor gibi geliyor bana.Bu durumda P11 hücresi büyükte küçükte olsa 25 ten,A11:A39 aralığı yazacaktır.İsterseniz siz koda müdahale ederek yazdırma alanını değeiştrebilirsiniz.Kodlar aşağıdadır.

Fakat bir sorun var. P11 hücresindeki değer 25'ten küçük de olsa büyük de olsa A1:J78 aralığını yazdırıyor. Anlayamadım. Yardımınız için çok teşekkür ederim. İyi günler.
üstte ilk sorduğunuzda 2nci ve 3ncü şıkları siz yazmadınızmı.Dikkat edin her 2 şıkta sonuç eşit olsada yazdırılır olmasada yazdırılır.Bunu ben size cevabı verirken söylemiştim.Anlaşılan onuıda okumamışsınız.
Buradan şu sonuç çıkıyor ki.Ne sorduğunuzu sizde bilmiyorsunuz.
Bu durumda bizim ne sorduğunu bilmeyen insanlara yinede doğru cevap vermemiz son derece takdire şayandır diye düşünüyorum.Tüm arkadaşlarıma bu yönden ben soru soranlar adına teşekkür ederim.:cool:
 
Merhaba arkadaşlar,
makro yazmak, tartışmak vs benim için çok ağır ama tartışma ortamınızı görünce sizler yardımcı olabilirisiniz diye düşündüm.
ekte küçük bir dosyam var. şimdiden teşekkürler ...

1- müsabakalar başlamadan önce A1.M51 aralığını yazdırmam gerek
2- müsabakalar bitince H1.T51 aralığını yazdırmalıyım
1-. işlem için U1 hücresinde "Print1"
2-. işlem için U2 hücresinde "Print2" butonu yapılabilirmi ?
 

Ekli dosyalar

Sn. Walnut dosyayı ekliyorum. baskı önizlemeden görebilmenizi de sağlıyor.
Kolay gelsin.
 

Ekli dosyalar

Sn. torqanum en azından basit bir örnek dosya gönderseniz belki çözüm daha kolay olacak. Uzman arkadaşlar izafi bir durum üzerine çözüm üretmiş oluyorlar ki sizin istediğiniz sonuca ulaşmak bazan uzayıp gidebilir.
 
çok tşk ederim, ancak farklı müsabakalar (koşu, atma, atlama vb.) için farklı formatta cetvellerimiz var.
ben sizin oluşturduğunuz butonları kopyala-yapıştır ile diğer müsabaka cetvellerine aktarabildim fakat yazdırırma alanları farklılaştığı için sorunum çözülmedi.
excel bilgimde kısıtlı olduğu için butonların etki alanına müdahale edemiyorum.
nasıl yapılabileceği hususunda bilgi verirmisiniz...
 
Sn. Walnut kodu bu şekilde düzenleyin.
Kod:
Public Sub Yazdır
Dim MyRng As Range
Set MyRng = Application.InputBox("Yazdıracağınız hücre aralığını seçin", "Yazdırılacak Alan...", Type:=8)
MyRng.Select
Application.Dialogs(xlDialogPrint).Show Arg12:=1
End Sub
hücre aralığını örneğin: a1:m51 şeklinde yazarsanız sizin istediğiniz alanı yazar. Bu şekilde tek bir kod kullanmanız yeterli.
 
S.A. herkese...
Öncelikle geçmiş kandiliniz mübarek olsun.

Yardımlarınız için çok teşekkür ederim.
Tavsiyeleriniz doğrultusunda istediğim teklif mektubunu hazırladım.

Böylelikle bu konu kapanmış oluyor.
S.A.
 

Ekli dosyalar

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