sadece makro ile sayfa ekleme

Katılım
17 Şubat 2006
Mesajlar
117
Asagidaki kodu yazdim. butona makroyu atadım. calistirdigimda once "BOŞ SAYFA1", tekrar butana bastığımda "BOŞ SAYFA0" geliyor. 3. basışta ise 400 hatasını veriyor. istedigim ise eğer sayfa mevcutsa sayaç şeklinde numaratörün artması... Tesekkurler...

Sub ser()
Dim i As Integer
i = 0
Dim Sayfa As Worksheet
Set Sayfa = ThisWorkbook.Worksheets.Add
Sayfa.Name = "BOŞ SAYFA" & i
For a = 1 To Sheets.Count
If Sheets(a).Name = Sayfa.Name Then Sayfa.Name = "BOŞ SAYFA" & i + 1 Else GoTo 20
Next a
20 Exit Sub
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
Bence sheets.count ile sayfa sayısını saydırarak isim vermek daha kolay aşağıdaki kodu inceleyin.

[vb:1:8659dd63a7]Sub sayfaekle()
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "BOŞ SAYFA" & Sheets.Count - 2
Sheets(1).Select
End Sub
[/vb:1:8659dd63a7]
 
Katılım
17 Şubat 2006
Mesajlar
117
sayin leventm,
aradaki sayfayı sildiğimde buda "400" hata kodu veriyor.
ör: boş sayfa0, boş sayfa1, boş sayfa2, boş sayfa3 oldugunda bos sayfa 2 yi sildigimde ve tekrar butona bastığımda hata:400 yaziyor...

neden olabilir?
 
Katılım
19 Ocak 2005
Mesajlar
940
Excel Vers. ve Dili
İŞ : Microsoft Office Excel 2003
EV : Microsoft Office Excel 2003
Serdenm bendende değişik bir örnek. kolay gelsin.


Sub sayfaekle()
On Error Resume Next
Worksheets(Nom).Select
If Err <> 0 Then Worksheets.Add.Name = Nom
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
ör: boş sayfa0, boş sayfa1, boş sayfa2, boş sayfa3 oldugunda bos sayfa 2 yi sildigimde ve tekrar butona bastığımda hata:400 yaziyor...
Bu gayet normal, aradan sayfa silince aynı isimli bir dosya daha oluşturmaya çalıştığından hata veriyor. Birde aşağıdaki gibi deneyin. Yalnız bu seferde sayfaların yerlerini değiştirmemeniz gerekiyor.

[vb:1:bb59bac554]Sub sayfaekle()
deg = Right(Sheets(Sheets.Count).Name, Len(Sheets(Sheets.Count).Name) - 9)
If deg = "" Then deg = 0
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "BOŞ SAYFA" & deg + 1
Sheets(1).Select
End Sub
[/vb:1:bb59bac554]
 
Katılım
17 Şubat 2006
Mesajlar
117
leventm, az önceki kod "invalid procedure call or argument" hatası veriyor.
nasıl düzeltebilirim?
 

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
Dosyanızı ekleyin onun üzerinden gidelim.
 
Katılım
12 Aralık 2005
Mesajlar
12
Selamlar;

otomatik sayfa açmak benim de çok işime yarayacak fakat benim her yeni sayfa için standart bir formatım olması gerekiyor. Yani "YENİ SAYFA" butonuna tıkladığımda bir "User Form" açılsa ven ben orada sayfa adını ve tarihini girdiğimde "MASTER" sayfsı gibi bir sayfa açılsa ve ilgili yerlere tarihler yazılıp bir önceki günden de devir rakamlarını alsa olur mu acaba (!)
 
Katılım
12 Aralık 2005
Mesajlar
12
Sorum çokmu zor yoksa kimse uğraşmak istemiyor mu?
:yardim: :agla:
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
Bu kodu bir deneyiniz.

Sub Düğme1_Tıklat()
ActiveSheet.Copy After:=Worksheets(Worksheets.Count)
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
Sn serdenm aşağıdaki kodu dosyanızdaki tüm butonlara bağlayarak deneyin.

[vb:1:e63ba7a76e]Sub sayfaekle2()
On Error GoTo 10
Sheets("BOŞ SAYFA0").Select
deg = Right(Sheets(Sheets.Count).Name, Len(Sheets(Sheets.Count).Name) - 9)
If deg = "" Then deg = 0
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "BOŞ SAYFA" & deg + 1
Sheets(1).Select
Exit Sub
10 Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "BOŞ SAYFA0"
Sheets(1).Select
End Sub
[/vb:1:e63ba7a76e]

Sn SYNC sizde aşağıdaki kodu yeni sayfa isimli butona bağlayarak çalıştırın. Sanıyorum userforma gerek yok, aşağıdaki kod bugün tarihli bir sayfa oluşturur ve bir gün önceki verileri bu sayfaya aktarır.

[vb:1:e63ba7a76e]Sub kopyala()
On Error Resume Next
Sheets("MASTER").Copy Before:=Sheets("MASTER")
Sheets("MASTER (2)").Name = Day(Date) & " " & UCase(Format(Date, "mmmm"))
[k2,a5] = Date
[d5] = Sheets(Day(Date) - 1 & " " & UCase(Format(Date, "mmmm"))).[d5]
[e5] = Sheets(Day(Date) - 1 & " " & UCase(Format(Date, "mmmm"))).[e5]
End Sub
[/vb:1:e63ba7a76e]
 
Katılım
17 Şubat 2006
Mesajlar
117
Sayin Leventm,

BOŞ SAYFA0, BOŞ SAYFA1 ekleyip BOŞ SAYFA0'ı sildiğimde yine "400" hatası veriyor.bu problemi aşmanın bir yolu yok mudur? 400 hatası ile ilgili help bilgisi de yok... :(
 
Katılım
17 Şubat 2006
Mesajlar
117
sayin arkadaslar,

bu soruna bir cozum bulamazmiyiz. mantik olarak her sheet in ismine bakip ayni sheet varsa "i" degiskenini bir artiran (for each dongusu gibi) makro ile halledilemezmi mesela??? :yardim:

tesekkurler.
 
Katılım
17 Şubat 2006
Mesajlar
117
arkadaslar bu sorunu cozmem gerekiyor. :(
leventm nin kodu cok yaklasti ama arada sayfa silince yine hata veriyor.
:agla:
 

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
Aşağıdaki kodu deneyin.

[vb:1:44739b5b23]Sub sayfaekle2()
On Error GoTo 10
If Left(Sheets(Sheets.Count).Name, 9) = "BOŞ SAYFA" Then GoTo 20
Sheets("BOŞ SAYFA0").Select
20 deg = Right(Sheets(Sheets.Count).Name, Len(Sheets(Sheets.Count).Name) - 9)
If deg = "" Then deg = 0
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "BOŞ SAYFA" & deg + 1
Sheets(1).Select
Exit Sub
10 Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "BOŞ SAYFA0"
Sheets(1).Select
End Sub
[/vb:1:44739b5b23]
 
Katılım
17 Şubat 2006
Mesajlar
117
leventm, tesekkur ederim. :hey:
 
Üst