Sorumluluk Sınav Programı

Katılım
4 Temmuz 2011
Mesajlar
7
Excel Vers. ve Dili
2003
Bilgiyi paylaşmayı seven güzel insanlar: Okulda yapılacak olan sorumluluk sınavları için hazırladığım sınav programına göre öğretmen arkadaşlara görevlerini tebliğ etmem gerekiyor. Bu nedenle sınav programında, sınavda görevli öğretmeninin sınav görevlerini öğretmen bazında ayrı sayfalara otomatik aktarmasını ve satır aralarında boşluk olmamasını istiyorum.
misal programda kimya öğretmeni cemil için sayfa ikiye(cemil adlı sayfaya), veriler otomatik aktarılacak ve satır aralarında boşluk olmayacak. Kolay gelsin
Örnek dosyayı ekliyorum.
 

Ekli dosyalar

Katılım
4 Temmuz 2011
Mesajlar
7
Excel Vers. ve Dili
2003
Güzel kardeşim, tam açıkladığım gibi oluşturmuşsun. Yüreğine ve beynine sağlık. Şimdi tek isteğim benim anlayacağım şekilde bunun izahını yapabilirmisin ? öğrenmek istiyorum. Şimdiden teşekkür ederim.
 

Muhammet Okumuş

Destek Ekibi
Destek Ekibi
Katılım
28 Eylül 2007
Mesajlar
4,014
Excel Vers. ve Dili
2013 Türkçe
Sub Liste()
Application.ScreenUpdating = False
İşlem yapılırken ekranda görünmesin. İşlemin bitmiş halini göster demektir.

Sil
Sil makrosunu çalıştırır. Sil makrosu program ve şablon sayfaları dışında açılan sayfaları siler. Aksi takdirde bir daha Liste kodunu çalıştırdığımızda eski veriler ile yeni veriler aynı yerde bulunur.

son = Cells(Rows.Count, "F").End(3).Row
program sayfası F sütununda yer alan bilgilerin en son satır numarasını verir. Bunu döngü için kullanacağız. F sütununda en son veri 10. Satırda olduğu için son=10 demektir.

For i = 5 To son
Veriler 5. Satırdan başladığından son değeri de 10 olduğundan i değeri 5 ile 10 arasında değer alacaktır.

adet = WorksheetFunction.CountIf(Range("F5:F" & i), Cells(i, 6))
cells(i,6) demek i ilk değeri 5 olduğu için cells(5,6) demektir. Cells(5,6) Oğuzhan demektir.

If adet > 1 Then GoTo 10
eğer adet 1 den büyükse 10 yazan satıra atla demektir. Bu satır ile 10 yazan satır arasında işlem yapmaz. adet değerinin 1 den fazla olması demek aslında o kişi ile ilgili sayfa açılmış demektir.

Eğer adet =1 ise aşağıdaki işmleri yapar.
Sheets("Şablon").Copy After:=Sheets(Sheets.Count)
Şablon sayfasını kopyala ve bu son sayfayı en son sayfa sekmesinde oluştur. Program 1. Sayfa, şablon 2. Sayfa oluyor. Daha sonra her yeni sayfa 3, 4 şeklinde gidiyor.
ActiveSheet.Name = Sheets("program").Cells(i, 6)
Açılan sayfanın adı cells(i,6) yani cells(5,6) yani Oğuzhan demektir.
Range("B2") = Sheets("program").Cells(i, 6) & " Sınav Programı"
Açılan sayfanın b2 hücresi oğuzhan Sınav Programı olsun.

Range("B5") = 1
Sıra no 1 olsun.

Range("C5:F5") = Sheets("program").Range(Sheets("program").Cells(i, 2), Sheets("program").Cells(i, 5)).Value
C5:F5 aralığında program sayfasına i değerinin B il E satırları olsun.

Range("G5") = Sheets("program").Cells(i, 7)
G5 hücresi program sayfasına i değerinin G satırı olsun.

GoTo 20
20 y6azan satıra git.

10
Eğer ki sayfa daha önceden açılmışsa örneğin i=5 değerinde iken Oğuzhan sayfası açılmıştı. İ = 7 değeri yine Oğuzhan olduğu için sayfa açmayacağız. İ= 7 için adet değeri 2 olmuştur. Adet değeri 1 den büyük olduğu için 10 yazan satıra kadar işlem yapmadan bu satıra geldik.
Sheets(Cells(i, 6).Text).Select
İ= 7 değeri için Oğuzhan sayfasını seçiyoruz. Şu anda aktif sayfa Oğuzhan sayfasıdır.

sat = Cells(Rows.Count, "B").End(3).Row + 1
sat değeri son değerinde açıkladığım gibidir. +1 aymamın neden en son verini altındaki boş satır numarasını vermesi içindir. İ= 7 de iken sat değeri 6 dır.

Range("B" & sat & ":G" & sat).Borders.LineStyle = 1
B6:G6 aralığına kenarlık çiz.
Cells(sat, 2) = Cells(sat - 1, 2) + 1
B6 hücresi B5 hücresinden 1 fazla olsun. Bu sıra numarası içindir.

Range("C" & sat & ":F" & sat) = Sheets("program").Range(Sheets("program").Cells(i, 2), Sheets("program").Cells(i, 5)).Value
C6:F6 aralığı i=7 olduğu için program sayfasında b7:e7 aralığını al demektir.

Range("G" & sat) = Sheets("program").Cells(i, 7)
G6 program sayfasında G7 aralığını al demektir.

20
Sheets("program").Select

Next
End Sub


Eğer ki 11. Satır Oğuzhan olsaydı. Sat değeri 7 i değeri 11. Olacaktı.

Biraz karışık gelebilir. Ama biraz excel bilginiz varsa kısa sürede anlayacağınızdan eminim.
 
Katılım
4 Temmuz 2011
Mesajlar
7
Excel Vers. ve Dili
2003
Sub Liste()
Application.ScreenUpdating = False
İşlem yapılırken ekranda görünmesin. İşlemin bitmiş halini göster demektir.

Sil
Sil makrosunu çalıştırır. Sil makrosu program ve şablon sayfaları dışında açılan sayfaları siler. Aksi takdirde bir daha Liste kodunu çalıştırdığımızda eski veriler ile yeni veriler aynı yerde bulunur.

son = Cells(Rows.Count, "F").End(3).Row
program sayfası F sütununda yer alan bilgilerin en son satır numarasını verir. Bunu döngü için kullanacağız. F sütununda en son veri 10. Satırda olduğu için son=10 demektir.

For i = 5 To son
Veriler 5. Satırdan başladığından son değeri de 10 olduğundan i değeri 5 ile 10 arasında değer alacaktır.

adet = WorksheetFunction.CountIf(Range("F5:F" & i), Cells(i, 6))
cells(i,6) demek i ilk değeri 5 olduğu için cells(5,6) demektir. Cells(5,6) Oğuzhan demektir.

If adet > 1 Then GoTo 10
eğer adet 1 den büyükse 10 yazan satıra atla demektir. Bu satır ile 10 yazan satır arasında işlem yapmaz. adet değerinin 1 den fazla olması demek aslında o kişi ile ilgili sayfa açılmış demektir.

Eğer adet =1 ise aşağıdaki işmleri yapar.
Sheets("Şablon").Copy After:=Sheets(Sheets.Count)
Şablon sayfasını kopyala ve bu son sayfayı en son sayfa sekmesinde oluştur. Program 1. Sayfa, şablon 2. Sayfa oluyor. Daha sonra her yeni sayfa 3, 4 şeklinde gidiyor.
ActiveSheet.Name = Sheets("program").Cells(i, 6)
Açılan sayfanın adı cells(i,6) yani cells(5,6) yani Oğuzhan demektir.
Range("B2") = Sheets("program").Cells(i, 6) & " Sınav Programı"
Açılan sayfanın b2 hücresi oğuzhan Sınav Programı olsun.

Range("B5") = 1
Sıra no 1 olsun.

Range("C5:F5") = Sheets("program").Range(Sheets("program").Cells(i, 2), Sheets("program").Cells(i, 5)).Value
C5:F5 aralığında program sayfasına i değerinin B il E satırları olsun.

Range("G5") = Sheets("program").Cells(i, 7)
G5 hücresi program sayfasına i değerinin G satırı olsun.

GoTo 20
20 y6azan satıra git.

10
Eğer ki sayfa daha önceden açılmışsa örneğin i=5 değerinde iken Oğuzhan sayfası açılmıştı. İ = 7 değeri yine Oğuzhan olduğu için sayfa açmayacağız. İ= 7 için adet değeri 2 olmuştur. Adet değeri 1 den büyük olduğu için 10 yazan satıra kadar işlem yapmadan bu satıra geldik.
Sheets(Cells(i, 6).Text).Select
İ= 7 değeri için Oğuzhan sayfasını seçiyoruz. Şu anda aktif sayfa Oğuzhan sayfasıdır.

sat = Cells(Rows.Count, "B").End(3).Row + 1
sat değeri son değerinde açıkladığım gibidir. +1 aymamın neden en son verini altındaki boş satır numarasını vermesi içindir. İ= 7 de iken sat değeri 6 dır.

Range("B" & sat & ":G" & sat).Borders.LineStyle = 1
B6:G6 aralığına kenarlık çiz.
Cells(sat, 2) = Cells(sat - 1, 2) + 1
B6 hücresi B5 hücresinden 1 fazla olsun. Bu sıra numarası içindir.

Range("C" & sat & ":F" & sat) = Sheets("program").Range(Sheets("program").Cells(i, 2), Sheets("program").Cells(i, 5)).Value
C6:F6 aralığı i=7 olduğu için program sayfasında b7:e7 aralığını al demektir.

Range("G" & sat) = Sheets("program").Cells(i, 7)
G6 program sayfasında G7 aralığını al demektir.

20
Sheets("program").Select

Next
End Sub


Eğer ki 11. Satır Oğuzhan olsaydı. Sat değeri 7 i değeri 11. Olacaktı.

Biraz karışık gelebilir. Ama biraz excel bilginiz varsa kısa sürede anlayacağınızdan eminim.
Güzel kardeşim. Allah razı olsun.Yazdıklarını akşam sakin kafayla inceleyeceğim.Çok az excel bilgim var. misal Macroları hiç bilmiyorum. Çok teşekkürler. İyiki varsınız. :)
 
Katılım
4 Temmuz 2011
Mesajlar
7
Excel Vers. ve Dili
2003
Muhammet OKUMUŞ kardeş, selamün aleyküm, öncelikle yardımcı olduğun için teşekkür ederim. Ekte düzenlediğim dosyayı yeniden öğretmen bazında kodlayabilirmisiniz ? cemil sayfasında görevlendirme yazısının altındaki tabloya ilgili öğretmenin ana programdaki görevleri otomatik aktarılacak. yaklaşık 20 öğretmen ekledim. heyecanla mesajınızı bekliyorum. kolay gelsin. dosya EK te.
 

Ekli dosyalar

Muhammet Okumuş

Destek Ekibi
Destek Ekibi
Katılım
28 Eylül 2007
Mesajlar
4,014
Excel Vers. ve Dili
2013 Türkçe
Sanırım kod açıklamalarını anlayamadınız. Zamanla öğrenirsiniz inşallah. Şablon sayfasında yaptığınız değişiklikler diğer sayfalarda aynen kullanılıyor. Bu yüzden şablon sayfası üzerinde istediğiniz değişkliği yapabilirsiniz. Dosyayı inceleyiniz.
 

Ekli dosyalar

Son düzenleme:
Katılım
4 Temmuz 2011
Mesajlar
7
Excel Vers. ve Dili
2003
Evet güzel kardeşim siz açıklamayı iyi yapmışsınız, ama temelim olmadığından yetersiz kaldım. Dediğiniz gibi zamanla olacak şeyler bunlar. Sabrınıza ve hoşgörünüze teşekkür ederim. Umarım sık soru sorup usandırmıyorum ? Dosyayı inceledim, harikasınız.
 
Son düzenleme:
Katılım
11 Mayıs 2012
Mesajlar
1
Excel Vers. ve Dili
2010 türkçe
tşk ederiz
 
Üst