[ÇÖZÜLDÜ] Makro ile, ayın çalışma günlerine göre sayfa açmak hk.

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Katılım
5 Nisan 2006
Mesajlar
449
Excel Vers. ve Dili
Office Excel 2003
TÜRKÇE
Sevgili arkadaşlar, kullanmakta olduğum bir dosya var. Bu dosyada C1 hücresine 01.01.2007 yazıyorum ve aşağıya doğru çekerek 31.01.2007 tarihine kadar hücreleri dolduruyorum. Daha sonra da bir makro yardımı ile bu hücredeki isimlere göre tek tıklama ile 31 tane sayfa açıyorum. Buraya kadar bir sorun yok. Yapmak istediğime gelince.
1- Eğer mümkünse, ilk satıra yaztığım tarihe bakarak tek bir hareket ile o aya ait çalışma günlerini aşağıya doğru diğer hücrelere açmak. Yani aradaki tatil günlerini otomatik olarak yok saymak veya,
2 - Sayfa açmak için kullandığım makroda düğmeye tıkladığımda C1 hücresine bakarak o ayın çalışma günlerine göre aşağıya sayfalar açtırabilir miyim.
3 - Belirtilen ay bittiğinde yeni aya geçmeden önce, aşağıdaki eski aya ait sayfaları otomatik olarak silecek bir makro yapabilir miyiz.

Soru biraz karışık oldu ama, excelde yapılmayacak hiçbir şey olmadığına inanıyorum. Saygılarımla.....
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Tarihleri C sütununda sıralamadan yapılsa olmazmı, sayfa açmak için buna gerek yok, bir inputbox ile sadece ay adı belirtilerek, işlem yapılabilir, tatillerde derken haftasonu(cumartesi+pazar) ve resmi tatilleri kasdediyorsunuz sanırım.
 
Katılım
5 Nisan 2006
Mesajlar
449
Excel Vers. ve Dili
Office Excel 2003
TÜRKÇE
Tarihleri C sütununda sıralamadan yapılsa olmazmı, sayfa açmak için buna gerek yok, bir inputbox ile sadece ay adı belirtilerek, işlem yapılabilir, tatillerde derken haftasonu(cumartesi+pazar) ve resmi tatilleri kasdediyorsunuz sanırım.
Sevgili üstadım, ben C1 sütunundan bahsederken kendi yaptığım uygulamadan bahsettim. Sizin dediğiniz gibi bir şey elbette daha iyi olur. Benim yaptığım biraz daha basitçe bir uygulama (Bana göre tabiii).
Tatillerden kastım ise, ay içerisindeki resmi tatil günleri haricinde kalan çalışma günleridir. Bu uygulama için bir örnek verebilirseniz minnettar olurum. Saygılarımla...
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,895
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
Belki uygulamanıza faydası olur diye fonksiyonla bir örnek hazırladım.

I sütununa dini bayramları yazdım,milli bayramlarıda altına yazıp fonksiyonu

ona görede düzenleyebilirsiniz.
 
Katılım
5 Nisan 2006
Mesajlar
449
Excel Vers. ve Dili
Office Excel 2003
TÜRKÇE
Belki uygulamanıza faydası olur diye fonksiyonla bir örnek hazırladım.

I sütununa dini bayramları yazdım,milli bayramlarıda altına yazıp fonksiyonu

ona görede düzenleyebilirsiniz.
Sevgili Ali Kardeşim, sorumun cevabı değil ama güzel bir uygulama. Teşekkür ederim. Benim sorunum bunu makro ile bir düğmeye atamak istiyorum. İlginize teşekkür eder, saygılar sunarım.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
1 ve 2. sorunuz için,

Kod:
Sub sayfaolustur()
Application.ScreenUpdating = False
ad = ActiveSheet.Name
tarih = [c1]
[c:c].ClearContents
songun = Day(DateSerial(Year(tarih), Month(tarih) + 1, 1) - 1)
For a = 1 To songun
deg = Weekday(DateSerial(Year(tarih), Month(tarih), a), vbMonday)
If deg < 6 Then
c = c + 1
Cells(c, "c") = DateSerial(Year(tarih), Month(tarih), a)
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = a
Sheets(ad).Select
End If
Next
End Sub
3.sorunuz i&#231;in,

Kod:
Sub sayfasil()
Application.DisplayAlerts = False
For a = Sheets.Count To 1 Step -1
ad = Sheets(a).Name
If IsNumeric(ad) = True And ad < 32 Then Sheets(a).Delete
Next
End Sub
 
Katılım
5 Nisan 2006
Mesajlar
449
Excel Vers. ve Dili
Office Excel 2003
TÜRKÇE
Say&#305;n leventm,
s&#246;yleyecek s&#246;z bulam&#305;yorum. Ger&#231;ekten harika bir makro olmu&#351;. Te&#351;ekk&#252;r ederim. Benim kulland&#305;&#287;&#305;m makroyu a&#351;a&#287;&#305;ya &#231;&#305;kar&#305;yorum. Sizin de g&#246;rece&#287;iniz gibi. bu makro 11 numaral&#305; s&#252;tuna bakarak, orada belirtilen tarihlere g&#246;re a&#351;a&#287;&#305;ya "&#350;ABLON" isimli sayfay&#305; kopyalamak suretiyle sayfa ismi a&#231;maktad&#305;r. Sizin yazd&#305;&#287;&#305;n&#305;z makro ile bu makroyu birle&#351;tirmek istersek nas&#305;l bir de&#287;i&#351;iklik yapabiliriz. Yani, bu yazd&#305;&#287;&#305;n&#305;z makro ile a&#351;a&#287;&#305;ya a&#231;&#305;lan sayfalarda yine sayfa isimleri a&#231;&#305;lan tarih format&#305; ile ayn&#305; olmas&#305; gerekiyor &#231;&#252;nk&#252; aktarma makrosu g&#252;n&#252;n tarihine g&#246;re aktarma yap&#305;yor. Her sayfada &#351;ablon sayfas&#305; kopyalans&#305;n istiyorum. E&#287;er zahmet olmazsa makroda gerekli d&#252;zeltmeyi yapabilir misiniz. Sayg&#305; ve sevgilerimle.....
Kulland&#305;&#287;&#305;m makro bu,

Sub sheet_ekle()
'On Error GoTo atla:
On Error Resume Next
x = Sheets("G&#304;R&#304;&#350;").Cells(65536, 11).End(xlUp).Row
For i = 1 To x
sayfaadi = Sheets("G&#304;R&#304;&#350;").Cells(i, 11)

Sheets("&#350;ABLON").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Format(Sheets("G&#304;R&#304;&#350;").Cells(i, 11), Text)

Next

Sheets("G&#304;R&#304;&#350;").Select

End Sub
 
Son düzenleme:

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
A&#351;a&#287;&#305;daki gibi deneyin.

Kod:
[LEFT]Sub sayfaolustur()
Application.ScreenUpdating = False
ad = ActiveSheet.Name
tarih = [c1]
[c:c].ClearContents
songun = Day(DateSerial(Year(tarih), Month(tarih) + 1, 1) - 1)
For a = 1 To songun
deg = Weekday(DateSerial(Year(tarih), Month(tarih), a), vbMonday)
If deg < 6 Then
c = c + 1
Cells(c, "c") = DateSerial(Year(tarih), Month(tarih), a)
Sheets("&#351;ablon").Copy After:=Sheets(sheets.count)
Sheets(Sheets.Count).Name = [B][COLOR=blue]DateSerial(Year(tarih), Month(tarih), a)[/COLOR][/B]
Sheets(ad).Select
End If
Next
End Sub[/LEFT]
 
Katılım
5 Nisan 2006
Mesajlar
449
Excel Vers. ve Dili
Office Excel 2003
TÜRKÇE
Sayın leventm, daha önceki makroda açılan sayfalar tarih isimlerine göre açılmaktaydı. Yani 01.02.2007, 02.02.2007 gibi. Aktar makrosu da günün tarihine göre ilgili sayfaya aktarma yapıyordu. Bu şekilde sayfa açıldığı zaman yani 1,2,3.... şeklinde olduğunda aktar makrosu hata veriyor. Sayfa isimlerini tarih formatına çevirebilir miyiz. Ya da aktarma işlemini günün tarihine göre ilgili sayfaya aktarmasını sağlayabilir miyiz.

Saygılarımla...
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Son eklediğim kodu değiştirdim tekrar deneyin.
 
Katılım
5 Nisan 2006
Mesajlar
449
Excel Vers. ve Dili
Office Excel 2003
TÜRKÇE
Sayın leventm,
bu şekilde oldu ancak, bu kez de açılan sayfaların silinmesi için yazdığınız makro çalışmadı. Yukarıdaki sayfasil makrosunu da değiştirebilirsek sanırım olacak.
Ayrıca çok özür dileyerek başka bir soru sormak istiyorum.
Tarihe göre açtığımız sayfalarda belirlediğimiz bir hücrenin toplamını başka bir sayfaya alabilirmiyim. Yani, diyelim ki Ocak ayı için 25 tane sayfa oluşturduk. Bu sayfaların hepsinde de ortak bir hücre var ve bu hücrelerin toplamını tek bir sayfada görmek istiyorum. Bunun için bir makro yazabilir misiniz. Saygı ve sevgilerimle....
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Kod:
[LEFT]Sub sayfasil()
Application.DisplayAlerts = False
For a = Sheets.Count To 1 Step -1
ad = Sheets(a).Name
If Isdate(ad) = True Then Sheets(a).Delete
Next
End Sub[/LEFT]
Diğer sorunuz içinde aşağıdaki kodu deneyin. A1 hücresindeki değerleri toplamaktadır. msgbox yazan satıra veriyi yazmayı düşündüğünüz sayfayı ve hücreyi tanımlayın.

Kod:
[LEFT]Sub topla()
For a = 1 to Sheets.Count
ad = Sheets(a).Name
If Isdate(ad) = True Then deg=Sheets(a).[a1]+deg
Next
msgbox deg
End Sub[/LEFT]
 
Katılım
5 Nisan 2006
Mesajlar
449
Excel Vers. ve Dili
Office Excel 2003
TÜRKÇE
Sayın leventm,
cevabınız için çok teşekkür ederim. Lakin en son makroyu anlayamadım. Makronun ismi sanırım yanlışlıkla sayfasil olarak kalmış. Onu düzeltebilirim ama, msgbox satırına ne yazacağımı bilemiyorum. sayfalar içerisinde rapor isminde bir sayfa var ve orada da aynı tarihlere ait satırlar olacak. Yani ben bugünkü toplamı, rapor sayfasındaki bugünki tarih satırının karşısına yazdıracağım. Buna göre msgbox un karşısına ne yazmam gerekecek. Zahmet verdiğim için özür diler, saygılar sunarım...
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Kodun ismini de&#287;i&#351;tirin ben topla olarak de&#287;i&#351;tirdim.

Kusura bakmay&#305;n ama bu ele&#351;tiriyi yapmak durumunday&#305;m. Sorular&#305;n&#305;z&#305;da hem par&#231;a par&#231;a hemde eksik soruyorsunuz, fark&#305;ndaysan&#305;z her yazd&#305;&#287;&#305;m kod sonras&#305; yeni bir &#351;eyler ekliyorsunuz. Sorular&#305;n&#305;z&#305; bir kez detayl&#305;ca a&#231;&#305;klarsan&#305;z ve birde &#246;rnek dosya ile desteklerseniz, tek bir seferde cevaplay&#305;p konunun uzamas&#305;na engel olmu&#351; olurdunuz. &#199;&#252;nk&#252; uzay&#305;p giden bir ba&#351;l&#305;k istemeyerekte olsa insanda s&#305;k&#305;nt&#305; olu&#351;turuyor.
 
Katılım
5 Nisan 2006
Mesajlar
449
Excel Vers. ve Dili
Office Excel 2003
TÜRKÇE
Hocam, sonuna kadar haklısınız. Siz bu konuyu yazarken ben de Ali kardeşimin yazdığı yazıya bu konuda birşeyler yazıyordum. İçime doğmuştu çünki böyle bir şey olacağı. Her şey için çok teşekkür eder, saygılar sunarım....
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst