sayfa1'den sayfa2'ye sırayla veri aktarma

Katılım
28 Mart 2005
Mesajlar
48
Excel Vers. ve Dili
Excel 2003
Arkadaşlar,
Sayfa1'e VBA ile isim listesi kaydettirdim, bunlara etiket bastırmak istiyorum başka bir yol aklıma gelemediği için Sayfa1'de bulunan kayıtları Sayfa2'ye buton yardımıyla (muhtemelen döngü ile) sırasıyla birinci satırdaki verileri sayfa2'ye atıp yazdırıp sonra 2.3.4 ..... satırlarada aynı işlemi yaptırması ihtimali varmıdır.
Herkese kolay gelsin
 
Katılım
28 Mart 2005
Mesajlar
48
Excel Vers. ve Dili
Excel 2003
sayın idogus,
örnek için çok teşekkür ederim... inan işe yarayacak, bu arada cevap beklerken acaba bu döngüyü nasıl kurabilirim diye düşünürken şöyle bir garip göngü oluşturdum, gerçi çalıştı ama :D siz ustalar bunu görünce ne diyeceksiniz acaba :agla:
Sub Düğme2_Tıklat()
Dim adres
Dim ad
Dim soyad
Dim ilce
Dim il
Dim i As Integer
For i = 2 To 500
Sheets("Davet").Activate
If Cells(i, 1) = "" Then GoTo son
ad = Cells(i, 2)
soyad = Cells(i, 3)
adres = Cells(i, 5)
ilce = Cells(i, 6)
il = Cells(i, 7)
Sheets("Zarf").Activate
Cells(5, 5) = ad
Cells(5, 6) = soyad
Cells(9, 6) = adres
Cells(10, 7) = ilce
Cells(11, 7) = il
Sheets("Zarf").PrintOut Copies:=1
Next i
son:
End Sub
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bu tip gayretleri her zaman takdir etmişizdir, bu makro konusunu zaten kendiniz uğraşırsanız gerçek manada öğrenebilirsiniz. Bu nedenle tebrik ediyorum. Her ne kadar kendimi bir usta olarak görmesem de fikirlerimi söylemek istiyorum.

1-
Sheets("Davet").Activate
Bir sayfaya veri aktarırken o sayfayı active etmeye gerek yoktur. Sadece veri aktarılacak hücrenin başına sheets("Davet").cells(...) yazmak yeterlidir. Fakat çok sayıda hücre sözkonusu ise bu durumda her hücrenin başına sheets("Davet"). yazmak çok hoş olmayacağından, en başa set komutu ile bir değişkene sayfa ismini atayarak bunu kullanırsınız.

set s=sheets("Davet")
s.cells(....)
gibi.

2-
Sheets("Zarf").Activate
Cells(5, 5) = ad
Cells(5, 6) = soyad
Cells(9, 6) = adres
Cells(10, 7) = ilce
Cells(11, 7) = il
Yukarıdaki satırlarda değişken olmadığı için bunları, döngü içinde her seferinde yazdırmaya gerek yok, döngünün dışında bir kez yazdırabilirsiniz.

3-
Dim adres
Dim ad
Dim soyad
Dim ilce
Dim il
Dim i As Integer
Bence bu satırlara gerek yok, özellikle de Dim ad,....Dim il, bunları, Dim i As integer gibi tanımlarsanız o zaman diyeceğim bir şey yok.

Tüm üye arkadaşlardan rica ediyorum, eğer yukarıda yazdıklarımda fark etmeden atlamış olduğum bir şey varsa veya ilave edilecek görüşler olursa lütfen bunlarıda belirtin.
 
Katılım
2 Mart 2005
Mesajlar
225
Excel Vers. ve Dili
2003
2007
2010
Senin yazdığın kodda bir sorun yok ama istersen bu da kısaltılmış hali (Belki leventm daha da kısaltabilir).
İyi çalışmalar,

[vb:1:ab6d5c0f6c]
Sub Düğme2_Tıklat()
Dim i as double, d as object, z as object
set d = Sheets("Davet")
set z = Sheets("Zarf")
For i = 2 To 500
If Cells(i, 1) = "" Then GoTo son
z.Cells(5, 5) = d.Cells(i, 2)
z.Cells(5, 6) = d.Cells(i, 3)
z.Cells(9, 6) = d.Cells(i, 5)
z.Cells(10, 7) = d.Cells(i, 6)
z.Cells(11, 7) = d.Cells(i, 7)
z.PrintOut Copies:=1
Next i
son:
End Sub
[/vb:1:ab6d5c0f6c]
 
Üst