Sıralı olarak sayfa isimlendirme

Katılım
9 Aralık 2006
Mesajlar
134
Excel Vers. ve Dili
microsoft office professional plus 2010 TR
Makro ile sayfa isimlendirme

öncelikle şimdiden yardımda emeği geçecek herkese teşekkür ederim.

Ekte oluşturduğum bir veri kaynağı var.ben buraya sadece 01.01.2011'le başlayan ilk sayfa mevcut bu sayfayı ayı tamamlayacak şekilde 31.01.2011 tarihine kadar sayfa oluşturmak istiyorum.

Ilk sayfa ismini sırasıyla şubat,mart, nisan ......aralık ayları içinde uygulayacağım.yani oluşturulacak makroyu ilk sayfa ismini değiştirerek 12 ad ayrı çalışma sayfası oluşturacağım

son olarak gün gün sayfalar oluşturulduktan sonra 1 - 2 - 3 - 4 hafta şeklinde mevcut sayfaya haftalık toplam almanın kolay bir yolu var.
 

Ekli dosyalar

Son düzenleme:
Katılım
23 Eylül 2004
Mesajlar
1,754
Excel Vers. ve Dili
Excel 2010 TR
öncelikle şimdiden yardımda emeği geçecek herkese teşekkür ederim.

Ekte oluşturduğum bir veri kaynağı var.ben buraya sadece 01.01.2011'le başlayan ilk sayfa mevcut bu sayfayı ayı tamamlayacak şekilde 31.01.2011 tarihine kadar sayfa oluşturmak istiyorum.

Ilk sayfa ismini sırasıyla şubat,mart, nisan ......aralık ayları içinde uygulayacağım.yani oluşturulacak makroyu ilk sayfa ismini değiştirerek 12 ad ayrı çalışma sayfası oluşturacağım

son olarak gün gün sayfalar oluşturulduktan sonra 1 - 2 - 3 - 4 hafta şeklinde mevcut sayfaya haftalık toplam almanın kolay bir yolu var.

Ekteki Formulu denermisiniz

Kod:
Sub SayfaEkle()

K = inputbox("Hangi Ay Kopyalanacak")
for i = 1 to 31
Set NewSh = Sheets.Add(After:=Sheets(Sheets.Count))
NewSh.Name = i & "." & k & ".2010"
next
End Sub
 
Katılım
9 Aralık 2006
Mesajlar
134
Excel Vers. ve Dili
microsoft office professional plus 2010 TR
Kod:
Sub SayfaEkle()

K = inputbox("Hangi Ay Kopyalanacak")
for i = 1 to 31
Set NewSh = Sheets.Add(After:=Sheets(Sheets.Count))
NewSh.Name = i & "." & k & ".2010"
next
End Sub
Yukarıda ki kodu bir düğmeye yapıştırdım fakat ("Hangi Ay Kopyalanacak") kısmına yazıylada rakamlada yazdım ama makro bulunamadı hatası veriyor
 
Katılım
23 Eylül 2004
Mesajlar
1,754
Excel Vers. ve Dili
Excel 2010 TR
Kod:
Sub SayfaEkle()

K = inputbox("Hangi Ay Kopyalanacak")
for i = 1 to 31
Set NewSh = Sheets.Add(After:=Sheets(Sheets.Count))
NewSh.Name = i & "." & k & ".2010"
next
End Sub
Yukarıda ki kodu bir düğmeye yapıştırdım fakat ("Hangi Ay Kopyalanacak") kısmına yazıylada rakamlada yazdım ama makro bulunamadı hatası veriyor


Macroyu Kaydedip düğmeye atayın sonra çalıştırın karşınıza msg box çıkacak o bölüme ister 05 ister mayıs yazın ayın 1 inden 31 ne kadar sayfa açar.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
1 to 31 döngüsü yerine ayın son gününü veren fonksiyon vardı eklemiştim foruma ok ullanılabilir.
İnpuyta kopyalanacak ayın numarasını yazınız (ocak-1, şubat-2... ) gibi.
1 to ayınsongünü(ayno) dersek şubatta 28 yada 29 a, nisanda 30 a kadar döner.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Kod:
Sub denemeaysongün()
Dim ayno As Integer
Dim iSyc As Integer
Dim btsno As Integer
Dim txt As String
ayno = InputBox("İşlem Yapacağınız Ayın Numarasını giriniz: (ocak için 1 gb.)")
btsno = FncHsr_AyKaçGün(ayno)
txt = ""
For iSyc = 1 To btsno
    txt = txt & ", " & iSyc
Next
MsgBox txt
End Sub

Function FncHsr_AyKaçGün(ayno As Integer) As Integer
'Girilen tarihin ilkgününü döndürür: 15/aa/yyyy > 01/aa/yyyy
     Dim dTmpTarih As Date
     dTmpTarih = Format((DateSerial(2010, (ayno + 1), 1)) - 1, "dd/mm/yyyy")
    FncHsr_AyKaçGün = Day(dTmpTarih)
End Function
gibi olması daha iyi olur diyorum.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Şubat'ın 29 çektiği durumlarda sıkıntı yaşamamnız için aşağıdakini kodları uyarlamanızı tavsiye ederim.
Kod:
Sub denemeaysongün2()
'Dim Tarih As Integer
Dim iGiris1 As Date
Dim iSyc As Integer
Dim btsno As Integer
Dim txt As String
iGiris1 = InputBox("İşlem Yapacağınız Ayın ilkgününü aa/gg/yyyy şeklinde giriniz!")
btsno = Day(Format((DateSerial(Year(iGiris1), Month(iGiris1) + 1, 1)) - 1, "dd/mm/yyyy"))
txt = ""
For iSyc = 1 To btsno
    txt = txt & ", " & iSyc
Next
MsgBox txt
End Sub
 
Katılım
23 Eylül 2004
Mesajlar
1,754
Excel Vers. ve Dili
Excel 2010 TR
Şubat'ın 29 çektiği durumlarda sıkıntı yaşamamnız için aşağıdakini kodları uyarlamanızı tavsiye ederim.
Kod:
Sub denemeaysongün2()
'Dim Tarih As Integer
Dim iGiris1 As Date
Dim iSyc As Integer
Dim btsno As Integer
Dim txt As String
iGiris1 = InputBox("İşlem Yapacağınız Ayın ilkgününü aa/gg/yyyy şeklinde giriniz!")
btsno = Day(Format((DateSerial(Year(iGiris1), Month(iGiris1) + 1, 1)) - 1, "dd/mm/yyyy"))
txt = ""
For iSyc = 1 To btsno
    txt = txt & ", " & iSyc
Next
MsgBox txt
End Sub

Sayın Hsayar formuller için teşekkürler.. isim vermeden once excel sayfa1 dosyasını kopyalayarak kopyalanan sayfaların isimlerini ay ismi yaptırmak gerekiyor ben sayfa kopyalama ve isim değiştirme ile ilgili birşeyler yaptım fakat : Acamilik pek olmadı gibi


Çalışma Kitabıdan Bulunan Şablon isimli sayfa aynen kopyalanacak ve Örnek Nisan ayı içince 30 adet kopyalıyacak ve 01.04.2010 - 30.04.2010 olarak sayfa isimleri değişicek.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Günlük sayfanız hangisi? bu kitaptakiler herhalde aylık icaml için kullanılıyor
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
öncelikle şimdiden yardımda emeği geçecek herkese teşekkür ederim.

Ekte oluşturduğum bir veri kaynağı var.ben buraya sadece 01.01.2011'le başlayan ilk sayfa mevcut bu sayfayı ayı tamamlayacak şekilde 31.01.2011 tarihine kadar sayfa oluşturmak istiyorum.

Ilk sayfa ismini sırasıyla şubat,mart, nisan ......aralık ayları içinde uygulayacağım.yani oluşturulacak makroyu ilk sayfa ismini değiştirerek 12 ad ayrı çalışma sayfası oluşturacağım

son olarak gün gün sayfalar oluşturulduktan sonra 1 - 2 - 3 - 4 hafta şeklinde mevcut sayfaya haftalık toplam almanın kolay bir yolu var.
haftalık toplam yeine aylık toplam alsak olur mu?
 
Katılım
9 Aralık 2006
Mesajlar
134
Excel Vers. ve Dili
microsoft office professional plus 2010 TR
Hata veriyor

Kod:
sub denemeaysongün()
dim ayno as ınteger
dim isyc as ınteger
dim btsno as ınteger
dim txt as string
ayno = ınputbox("işlem yapacağınız ayın numarasını giriniz: (ocak için 1 gb.)")
btsno = fnchsr_aykaçgün(ayno)
txt = ""
for isyc = 1 to btsno
    txt = txt & ", " & isyc
next
msgbox txt
end sub

function fnchsr_aykaçgün(ayno as ınteger) as ınteger
'girilen tarihin ilkgününü döndürür: 15/aa/yyyy > 01/aa/yyyy
     dim dtmptarih as date
     dtmptarih = format((dateserial(2010, (ayno + 1), 1)) - 1, "dd/mm/yyyy")
    fnchsr_aykaçgün = day(dtmptarih)
end function
gibi olması daha iyi olur diyorum.
işlem yapılacak ayın numarasını girdikten sonra 1-31 aralığında gün listesi çıkıyor tamam dememe rağmen sayfaları oluşturmuyor
 

Ekli dosyalar

Katılım
9 Aralık 2006
Mesajlar
134
Excel Vers. ve Dili
microsoft office professional plus 2010 TR
şubat'ın 29 çektiği durumlarda sıkıntı yaşamamnız için aşağıdakini kodları uyarlamanızı tavsiye ederim.
Kod:
sub denemeaysongün2()
'dim tarih as ınteger
dim igiris1 as date
dim isyc as ınteger
dim btsno as ınteger
dim txt as string
igiris1 = ınputbox("işlem yapacağınız ayın ilkgününü aa/gg/yyyy şeklinde giriniz!")
btsno = day(format((dateserial(year(igiris1), month(igiris1) + 1, 1)) - 1, "dd/mm/yyyy"))
txt = ""
for isyc = 1 to btsno
    txt = txt & ", " & isyc
next
msgbox txt
end sub
bu kodda da aynı hata var
 

Ekli dosyalar

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
BUnu bir deneyin
MENU adlı bir sayfa oluşturuldu ve komut düğmesine aşağıdaki kodlar atandı.
- Yeni çalışma kitabı aç
- Girdiğiniz tarihten ayın son güne kadar adını o günün tarihi olarak değiştirerek Çalışma sayfası ekle
- Yeni kitapta oluşan sayfa(sheet) 1,2,3 gibi varsayılan kitapları kaldır.
- En sona şablon adlı sayfayı TOPLAM adında kopyala


Kod:
Private Sub CommandButton1_Click()
  Dim wkbYKTP     As Excel.Workbook
  Dim wkbBKTP     As Excel.Workbook
  Dim wksSSYF     As Excel.Worksheet
  Dim wksYSYF     As Excel.Worksheet
  
  Dim dTARIH      As Date
  Dim intYKCS     As Integer
  Dim intSNGN     As Integer
  
  Set wkbYKTP = Workbooks.Add
  Set wkbBKTP = ThisWorkbook
  Set wksSSYF = wkbBKTP.Worksheets("SABLON")
  
  dTARIH = InputBox("İşlem Yapacağınız Ayın ilkgününü aa/gg/yyyy şeklinde giriniz!")
  intSNGN = Day(Format((DateSerial(Year(dTARIH), Month(dTARIH) + 1, 1)) - 1, "dd/mm/yyyy"))
  intYKCS = wkbYKTP.Sheets.Count
    
    For i = 1 To intSNGN
      wksSSYF.Copy After:=wkbYKTP.Sheets(wkbYKTP.Sheets.Count)
      Set wksYSYF = ActiveSheet
      wksYSYF.Name = Format(dTARIH + i - 1, "dd.mm.yyyy")
    Next
  
    With wkbYKTP
     For i = intYKCS To 1 Step -1
       Application.DisplayAlerts = False   'ekrana mesaj vermeyi kapat
       .Sheets(i).Delete
       Application.DisplayAlerts = True   'ekrana mesaj vermeyi aç
     Next i
    End With
  
      wksSSYF.Copy After:=wkbYKTP.Sheets(wkbYKTP.Sheets.Count)
      Set wksYSYF = ActiveSheet
      wksYSYF.Name = "TOPLAM"
  
End Sub
 

Ekli dosyalar

Katılım
9 Aralık 2006
Mesajlar
134
Excel Vers. ve Dili
microsoft office professional plus 2010 TR
haftalık toplam yeine aylık toplam alsak olur mu?
Gerçekten diyecek söz bulamıyorum ellerinize sağlık. Ayrıca metin birleştirmeler önemli değil.

son olarak aklıma gelen bir şey var vardiyada ki arkadaşlar bazen bu formu doldurmayı ihmal ediyorlar.Örneğin 4 Ocak bilgilerinin girilmediğini farz edelim. 5 Ocak bilgilerinin girilebilmesi için bir önceki günün bilgilerinin girilmiş olma şartını uygulayabilir miyiz. eğer mümkünse (ekip-km) toplam sutunundaki satırların sıfırdan büyük olması şartını sağlayabilirmiyiz. kişi bu iki kısmı doldurmadığı zaman bir uyarı alsın ve doldurulmadığı sürece bir sonraki gün için işlem yapamasın.

ayrıca dosya adı kitap 1 şeklinde oluşuyor bunu (ilgili ay ismi) 2011 ACİL MÜDAHALE GÜNLÜK FAALİYET RAPORU şeklinde oluşturmak mümkün mü
 
Son düzenleme:
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Gerçekten diyecek söz bulamıyorum ellerinize sağlık. Ayrıca metin birleştirmeler önemli değil.

son olarak aklıma gelen bir şey var vardiyada ki arkadaşlar bazen bu formu doldurmayı ihmal ediyorlar.Örneğin 4 Ocak bilgilerinin girilmediğini farz edelim. 5 Ocak bilgilerinin girilebilmesi için bir önceki günün bilgilerinin girilmiş olma şartını uygulayabilir miyiz. eğer mümkünse (ekip-km) toplam sutunundaki satırların sıfırdan büyük olması şartını sağlayabilirmiyiz. kişi bu iki kısmı doldurmadığı zaman bir uyarı alsın ve doldurulmadığı sürece bir sonraki gün için işlem yapamasın.

ayrıca dosya adı kitap 1 şeklinde oluşuyor bunu (ilgili ay ismi) 2011 ACİL MÜDAHALE GÜNLÜK FAALİYET RAPORU şeklinde oluşturmak mümkün mü
elimden geldiğimce ve öğrendiğimce yaptıım.

Günlük sayfası doldurulunca sayfa üzerinde işlem yapıyormusunzu? (Toplamıonı aldığımız alanlar hariç) mesala her sayfanın l5 ine rapor no yazmayı zorunlu tutsak nasıl olur.
 
Katılım
9 Aralık 2006
Mesajlar
134
Excel Vers. ve Dili
microsoft office professional plus 2010 TR
Seni anlıyorum bunları yapabilmek uzun süren bir birikim gerektirir. Zaten bahsettiğim o şartlandırmayı yapmaktan vazgeçtik.sadece senden istediğim sayfa ismi kitap 1 şeklinde olmasın.
Her şey için teşekkürler
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Gerçekten diyecek söz bulamıyorum ellerinize sağlık. Ayrıca metin birleştirmeler önemli değil.

son olarak aklıma gelen bir şey var vardiyada ki arkadaşlar bazen bu formu doldurmayı ihmal ediyorlar.Örneğin 4 Ocak bilgilerinin girilmediğini farz edelim. 5 Ocak bilgilerinin girilebilmesi için bir önceki günün bilgilerinin girilmiş olma şartını uygulayabilir miyiz. eğer mümkünse (ekip-km) toplam sutunundaki satırların sıfırdan büyük olması şartını sağlayabilirmiyiz. kişi bu iki kısmı doldurmadığı zaman bir uyarı alsın ve doldurulmadığı sürece bir sonraki gün için işlem yapamasın.

Aşağıdaki kodun class ile yazılması sorununuz çözer, yada siz açılan her sayfaya yapıştıracaksınız yada ben şablon sayfasında tutarak bunu kopyalayacam ama bu dosya boyutunun büyümesine neden olur
Kod:
Private Sub Worksheet_Activate()
Rem Üzerine tıklanılan çalışma sayfasından bir öncekinin adı
'   ŞABLON değil ve 01 ile başlamıyorsa tıklanılan sayfaya girişe izin verme
'   ve önceki sayfaya git.
  Dim wksACT    As Excel.Worksheet
  Dim wksONC    As Excel.Worksheet
  Dim rngRPR    As Excel.Range
  
  Set wksACT = ThisWorkbook.ActiveSheet
  Set wksONC = ThisWorkbook.Worksheets(wksACT.Index - 1)
  
  
  If Left(wksACT.Name, 2) = "01" Then GoTo isleyissonu
  If wksACT.Name = "SABLON" Then GoTo isleyissonu
  
  If wksONC.Range("L5").Text = "" Then
    MsgBox "Lütfen " & wksONC.Name & " adlı sayfada Rapor numarasını giriniz."
    wksONC.Select
    wksONC.Range("L5").Select
  End If
  
isleyissonu:
  Set wksACT = Nothing
  Set wksONC = Nothing
End Sub
ayrıca dosya adı kitap 1 şeklinde oluşuyor bunu (ilgili ay ismi) 2011 ACİL MÜDAHALE GÜNLÜK FAALİYET RAPORU şeklinde oluşturmak mümkün mü
evet mümkün bakın şu olayı şöyle yapalım...
inputbox a 01/11/2012 değerinini girdiniz diyelim...
-2012 raporları adında klasör var mı diye baksın...
-Ardından girilen ayın adında (kasım, aralık) bir kitap oluştursun.
 
Üst