• DİKKAT

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

Çoklu Hücre Kopyalama & Yazdırma

  • Konbuyu başlatan Konbuyu başlatan crion
  • Başlangıç tarihi Başlangıç tarihi
Katılım
20 Ekim 2011
Mesajlar
60
Excel Vers. ve Dili
Excel 2010
Selamlar, sizlere bir sorum olacak.

VB programım excel data sayfasından gerekli bilgileri çekiyor ve yaklaşık (en fazla) yarım sayfayı (A4 sayfa) dolduruyor. Benim istediğim, yazdır butonuna tıkladığımda bu yarım sayfadaki bilgilerin kopyasını alıp iki boşluk bırakıp alta yapıştırması (böylece tek sayfada aynı bilgilerin iki nüshası olacak) ve o şekilde yazdırmak. Şu şekilde bir kod yazdım, ancak sanırım yapıştırma kısmında sıkıntı oluyor o da Range ile alakalı sanırsam. Yardımcı olabilir misiniz?

Kod:
Private Sub CommandButton103_Click()
'print bu, ama önce iki nüsha basmak için üsttekilerin kopyasını alta koymalı
Dim lastrow As Integer
lastrow = ActiveSheet.UsedRange.Rows.Count
Sheets("teslim").Range("A1:F" & lastrow).Copy
Destination[COLOR="Red"]:=[/COLOR]Sheets("teslim").Range("A" & lastrow+2 & ":F" & lastrow+2) 'Expected expression hatası
Range("a1:f48").Select
'burada yazıcı seçimi ekrana gelmeli
ActiveSheet.PageSetup.PrintArea = "$A$1:$F$48"
Application.Visible = True
Application.ScreenUpdating = True
UserForm3.Hide

Küçük bir son sorum daha var, bildiğim kadarı ile VB ile sadece bir excel sayfasının ayrı bir dosya olarak kaydı sanırım mümkün değil, bu sayfa kopyalama seçeneği ile mümkün oluyormuş sanırım; VB kullanarak bu sayfanın başka bir excel dosyası içine kopyalanarak kaydedilmesi mümkün müdür? Yardımlarınız için şimdiden teşekkürler.
 
".Copy"den sonra "_" ekleyiniz veya aynı satırdan "Destination" ile devam ediniz.
 
".Copy"den sonra "_" ekleyiniz veya aynı satırdan "Destination" ile devam ediniz.

Kod:
Sheets("teslim").Range("A1:F" & lastrow).Copy_Destination[COLOR="Red"]:=[/COLOR]Sheets("teslim").Range("A" &lastrow+2& ":F" &lastrow+2)
olarak düzelttim ancak bu satırda syntax hatası verdi, ne yapabilirim?
 
Kod:
Sheets("teslim").Range("A1:F" & lastrow).Copy _
Destination[COLOR="Red"]:=[/COLOR]Sheets("teslim").Range("A" &lastrow+2& ":F" &lastrow+2)
olarak düzelttim ancak bu satırda syntax hatası verdi, ne yapabilirim?

Üstte sizin yazdığınızı değiştirdim.
 
Üstte sizin yazdığınızı değiştirdim.

Düzeltmenizi aynen uyguladım İhsan bey, ancak o satırda syntax hatası ile karşılaştım. Bu "_"den önce bir boşluk (mu?) var acaba?

Kod:
Sheets("teslim").Range("A1:F" & lastrow).Copy Destination:=Sheets("teslim").Range("A" &lastrow+2& "[COLOR="Red"]:F[/COLOR]" &lastrow+2)
olarak uygulayınca da kırmızı bölgece syntax hatası verdi.
 
".Copy"den sonra "_" ekleyiniz veya aynı satırdan "Destination" ile devam ediniz.

sn crion.

ibarenin "ve" değil "veya" olduğuna dikkat ediniz.

Kod:
Sheets("teslim").Range("A1:F" & lastrow).Copy Destination:=Sheets("teslim").Range("A" &lastrow+2& ":F" &lastrow+2)

ifade.Copy Destination:=ifade
tabi bu Copy yönteminin doğru syntax'i olup kod çalıştığında farklı hatalar verebilir.
 
Kod:
Sheets("teslim").Range("A1:F" & LastRow).Copy _
Destination:=Sheets("teslim").Range("A" & LastRow + 2)
 
Düzeltmenizi aynen uyguladım İhsan bey, ancak o satırda syntax hatası ile karşılaştım. Bu "_"den önce bir boşluk (mu?) var acaba?

Kod:
Sheets("teslim").Range("A1:F" & lastrow).Copy Destination:=Sheets("teslim").Range("A" &lastrow+2& "[COLOR="Red"]:F[/COLOR]" &lastrow+2)
olarak uygulayınca da kırmızı bölgece syntax hatası verdi.

Dosyanızı ekleseniz
 
Dosya ektedir. Açılan ekrandan Excel butonuna tıklayarak excel'e dönebilirsiniz.
Hatalı satır UserForm3'te bulunan CommandButton103_Click() fonksiyonunda belirtilmiş durumda.
 

Ekli dosyalar

Dosya ektedir. Açılan ekrandan Excel butonuna tıklayarak excel'e dönebilirsiniz.
Hatalı satır UserForm3'te bulunan CommandButton103_Click() fonksiyonunda belirtilmiş durumda.

Merhaba
Kodu bununla değiştirin.
Kod:
Sheets("teslim").Range("A1:F" & lastrow).Copy _
Destination:=Sheets("teslim").Range("A" & lastrow + 2 & ":F" & lastrow + 2)
 
Merhaba
Kodu bununla değiştirin.
Kod:
Sheets("teslim").Range("A1:F" & lastrow).Copy _
Destination:=Sheets("teslim").Range("A" & lastrow + 2 & ":F" & lastrow + 2)

teşekkürler şu anda hatasız çalışmakta, ancak 2 satır atlayıp kopyaladığı veriyi yapıştırmak yerine, artık çok aşağılara yapıştırıyor... lastrow değerinin 189, 389, 759 olarak arttığını farkettim. Bunu nasıl düzeltebilirim?
 
teşekkürler şu anda hatasız çalışmakta, ancak 2 satır atlayıp kopyaladığı veriyi yapıştırmak yerine, artık çok aşağılara yapıştırıyor... lastrow değerinin 189, 389, 759 olarak arttığını farkettim. Bunu nasıl düzeltebilirim?

Merhaba
Kodu bununla değiştirip deneyin.
Kod:
Private Sub CommandButton103_Click()
'print bu, ama önce iki nüsha basmak için üsttekilerin kopyasını alta koymalı
Dim lastrow As Integer
lastrow = Sheets("teslim").Range("A" & Rows.Count).End(xlUp).Row
'HATALI SATIR ALTTA (SYNTAX ERROR)
Sheets("teslim").Range("A1:F" & lastrow).Copy _
Destination:=Sheets("teslim").Range("A" & lastrow + 1 & ":F" & lastrow + 1)
Sheets("teslim").Range("a1:f48").Select
Sheets("teslim").PageSetup.PrintArea = "$A$1:$F$48"
Application.Visible = True
Application.ScreenUpdating = True
UserForm3.Hide
End Sub
 
Merhaba
Kodu bununla değiştirip deneyin.
Kod:
Private Sub CommandButton103_Click()
'print bu, ama önce iki nüsha basmak için üsttekilerin kopyasını alta koymalı
Dim lastrow As Integer
lastrow = Sheets("teslim").Range("A" & Rows.Count).End(xlUp).Row
'HATALI SATIR ALTTA (SYNTAX ERROR)
Sheets("teslim").Range("A1:F" & lastrow).Copy _
Destination:=Sheets("teslim").Range("A" & lastrow + 1 & ":F" & lastrow + 1)
Sheets("teslim").Range("a1:f48").Select
Sheets("teslim").PageSetup.PrintArea = "$A$1:$F$48"
Application.Visible = True
Application.ScreenUpdating = True
UserForm3.Hide
End Sub

Teşekkürler İhsan bey, dediğinizi uygulayıp lastrow + 3 olarak belirtince istediğim iki satırlık boşluğu sorunsuz elde ettim. Son olarak kodda da görüldüğü üzere bu sayfanın çıktısını alabilmek için
Kod:
Sheets("teslim").PageSetup.PrintArea = "$A$1:$F$48"
kodu yazdırma menüsünü ekrana getirmiyor (yazıcı tercihi yapabilmek için), sizce sadece Sheets("teslim").PrintOut mu kullanmalıyım?
 
Teşekkürler İhsan bey, dediğinizi uygulayıp lastrow + 3 olarak belirtince istediğim iki satırlık boşluğu sorunsuz elde ettim. Son olarak kodda da görüldüğü üzere bu sayfanın çıktısını alabilmek için
Kod:
Sheets("teslim").PageSetup.PrintArea = "$A$1:$F$48"
kodu yazdırma menüsünü ekrana getirmiyor (yazıcı tercihi yapabilmek için), sizce sadece Sheets("teslim").PrintOut mu kullanmalıyım?

Merhaba
Yazıcı seçmek için bu kodu kullanabilirsiniz_?
Not : Kod Necdet Yeşertener Hocadan (ç)alıntıdır.
Kod:
Option Explicit
Sub yazıcı()
Dim ts As String
ts = Application.Dialogs(xlDialogPrinterSetup).Show
If ts = False Then Exit Sub
End Sub
 
Merhaba
Yazıcı seçmek için bu kodu kullanabilirsiniz_?
Not : Kod Necdet Yeşertener Hocadan (ç)alıntıdır.
Kod:
Option Explicit
Sub yazıcı()
Dim ts As String
ts = Application.Dialogs(xlDialogPrinterSetup).Show
If ts = False Then Exit Sub
End Sub

Kodu denedim, bir yazıcı seçme ekranı geliyor ancak seçimden sonra hiçbir şey olmuyor (yazdırmıyor). Sheets("teslim").PrintOut komutu da varsayılan yazıcıdan direkt olarak yazdırıyor, ben yazıcıyı seçebilmeyi isterdim açıkçası.

Edit: Aradığım kodu buldum, yazıcı seçme ve yazdırma seçeneklerini ekrana getiren kod Application.Dialogs(xlDialogPrint).Show imiş. Yardımlarınız için teşekkürler.
 
Son düzenleme:
Kodu denedim, bir yazıcı seçme ekranı geliyor ancak seçimden sonra hiçbir şey olmuyor (yazdırmıyor). Sheets("teslim").PrintOut komutu da varsayılan yazıcıdan direkt olarak yazdırıyor, ben yazıcıyı seçebilmeyi isterdim açıkçası.

Edit: Aradığım kodu buldum, yazıcı seçme ve yazdırma seçeneklerini ekrana getiren kod Application.Dialogs(xlDialogPrint).Show imiş. Yardımlarınız için teşekkürler.

Rica ederim
:keyif:
 
Geri
Üst