Makro ile Sayfa (sheet) ismini değiştirme

batuhanoc

Altın Üye
Katılım
7 Aralık 2006
Mesajlar
29
Excel Vers. ve Dili
Offfice 365 - Türkçe
Altın Üyelik Bitiş Tarihi
19-06-2025
Arkadaşlarım merhaba,

Bir makro ile arka arkaya yeni sayfalar oluşturuyor ve bunların içinde tablolar oluşmasını sağlıyorum. Sayfa ismininde oluşturduğum sayfadaki E3 hücresindeki kelimenin olmasını istiyorum. Fakat bir türlü bu sayfa ismi değiştirme işlemini başaramadım. Yardımlarınızı bekliyorum. Şimdiden teşekkür ederim.

Batuhan
 
Katılım
17 Şubat 2006
Mesajlar
981
Excel Vers. ve Dili
M.Office Excel 2003 Tr.
Forumda arama yaptınız mı?
O kadar çok örnek var ki?

SORU SORMADAN ÖNCE LÜTFEN FORUMDA ARAMA YAPIN.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
Yine de ben makro önerimi yapmak istiyorum, aşağıdaki kodları bir butona bağlayınız.

Kod:
Public Sub SayfaOlustur()
For i = 1 To Sheets.Count
    If Sheets(i).Name = Sheets(1).[E3] Then Buldum = 1
Next i
If Buldum <> 1 Then
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = Sheets(1).[E3]
    Sheets(1).Select
End If
    
End Sub
 

batuhanoc

Altın Üye
Katılım
7 Aralık 2006
Mesajlar
29
Excel Vers. ve Dili
Offfice 365 - Türkçe
Altın Üyelik Bitiş Tarihi
19-06-2025
Tekrar merhaba,

İlginiz için çok teşekkür ederim. Kombo arkadaşımın dediği gibi forumda araştırma yaptım fakat tam olarak kendi makroma uyarlayamadım.
Necdet bey yazmış olduğunuz kodları benim makromun içine yazdım fakat mevcut sayfanın yanına yeni bir boş sayfa açıp o sayfaya ismi veriyor. Yani benim makro ile açmış olduğum sayfa eski ismiyle kalıyor. Benim kodların arasına bu kodu eklemem lazım. Aşağıda gülen adamlar kısmınına bu kodları yazacağım . Yardımlarınız için tekrar teşekkür ederim.

Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
:) :) :)
:) :) :) :) :) :)
Windows("Birey- 4 Mayıs 2007.xls").Activate
ActiveWindow.WindowState = xlNormal
Range("EX50").Select
 
Katılım
17 Şubat 2006
Mesajlar
981
Excel Vers. ve Dili
M.Office Excel 2003 Tr.
Kod:
 ActiveSheet.Name=[E3].Value
Bunu deneyin.
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
&#199;al&#305;&#351;ma Kitab&#305;n&#305;n ThisWorkbook b&#246;l&#252;m&#252;ne a&#351;a&#287;&#305;daki kodu yap&#305;&#351;t&#305;r&#305;n&#305;z. Hangi sayfadan ve hangi h&#252;creden isim verirseniz, sayfada o ismi al&#305;r.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
ActiveSheet.Name = [a1]
End Sub

Yukar&#305;daki kodta Necdet bey, "Private" yerine "Public" kullanm&#305;&#351;. Yan&#305;lm&#305;yorsam, pek kullan&#305;lm&#305;yor, nadiren kullan&#305;l&#305;yor. Bu, hangi durumlarda avantajl&#305;d&#305;r, ve "Private" komutu gibi otomatik &#231;&#305;kabiliyor mu? Bu konuda bilgisi olan varsa, payla&#351;&#305;l&#305;rsa, memnun oluruz.
 

batuhanoc

Altın Üye
Katılım
7 Aralık 2006
Mesajlar
29
Excel Vers. ve Dili
Offfice 365 - Türkçe
Altın Üyelik Bitiş Tarihi
19-06-2025
Kod:
 ActiveSheet.Name=[E3].Value
Bunu deneyin.
Kombo arkadaşım kod için çok teşekkür ederim. Kodunuzu yazdım ve mükemmel çalıştı.Yalnızca ileride şöyle bir sorun olma ihtimali var. Eğer E3 hücresindeki isimden başka bir sayfa ismi var ise hata veriyor. Böyle bir durumda makronun hata vermeden çalışması için ne yapabilirim.
 
Katılım
17 Şubat 2006
Mesajlar
981
Excel Vers. ve Dili
M.Office Excel 2003 Tr.
Deneme imkanım olmadı, herhalde şöyle olacak.
Kod:
For i = 1 To Sheets.Count
    If Sheets(i).Name = ActiveSheet.[E3] Then
MsgBox ("sayfa ismi mevcut")
Exit Sub
End If
Next
Ayrıca makro bilgim zayıf. Hatalıysa ustalar düzeltir herhalde.....
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
Ben kodları yazarken, ilk sayfanın isminin ne olacağını bilmediğimden kodları 1. sayfa da çalışacak anlamında yazdım. Ayrıca aynı sayfa adıyla sayfa açmamasını önlemek için kontrol yaptım.

Yapmadığım şey ise harf kontrolü

Büyük harf küçük harf kontrolü ile yapılmış hali :

Kod:
Public Sub SayfaOlustur()
Application.WorksheetFunction.Proper (Sheets(1).[E3])
For i = 1 To Sheets.Count
    If Sheets(i).Name = Sheets(1).[E3] Then Buldum = 1
Next i
If Buldum <> 1 Then
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = Sheets(1).[E3]
    Sheets(1).Select
End If
    
End Sub
 
Katılım
29 Eylül 2006
Mesajlar
189
Excel Vers. ve Dili
Excel 2003 turkce
Thisworkbook bolumune asagidaki kodu yapıstırın!

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
ActiveSheet.Name = Range("E3").Value
End Sub
 

batuhanoc

Altın Üye
Katılım
7 Aralık 2006
Mesajlar
29
Excel Vers. ve Dili
Offfice 365 - Türkçe
Altın Üyelik Bitiş Tarihi
19-06-2025
Ben kodları yazarken, ilk sayfanın isminin ne olacağını bilmediğimden kodları 1. sayfa da çalışacak anlamında yazdım. Ayrıca aynı sayfa adıyla sayfa açmamasını önlemek için kontrol yaptım.

Yapmadığım şey ise harf kontrolü

Büyük harf küçük harf kontrolü ile yapılmış hali :

Kod:
Public Sub SayfaOlustur()
Application.WorksheetFunction.Proper (Sheets(1).[E3])
For i = 1 To Sheets.Count
    If Sheets(i).Name = Sheets(1).[E3] Then Buldum = 1
Next i
If Buldum <> 1 Then
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = Sheets(1).[E3]
    Sheets(1).Select
End If
    
End Sub
Necdet bey yardımlarınız için teşekkür ederim. Fakat yazmış olduğunuz kod mevcut sayfayı değilde yeni bir boş sayfa açıp o sayfayı adlandırıyor.
Bu arada kombo arkadaşımın ikinci kodu malesef çalışmadı.
 
Katılım
17 Şubat 2006
Mesajlar
981
Excel Vers. ve Dili
M.Office Excel 2003 Tr.
Kod:
Sub Makronuzun adı()
[COLOR=navy]For i = 1 To Sheets.Count[/COLOR]
[COLOR=navy]   If  ActiveSheet.[E3] =Sheets(i).Name Then[/COLOR]
[COLOR=navy]MsgBox ("sayfa ismi mevcut")[/COLOR]
[COLOR=navy]Exit Sub[/COLOR]
[COLOR=navy]End If[/COLOR]
[COLOR=navy]Next[/COLOR]
[COLOR=red]Kodlarınızın başlangıcı[/COLOR]
[COLOR=red].[/COLOR]
[COLOR=red].[/COLOR]
[COLOR=red].[/COLOR]
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
 
[COLOR=navy]ActiveSheet.Name=[E3].Value[/COLOR]
 
Windows("Birey- 4 Mayıs 2007.xls").Activate
ActiveWindow.WindowState = xlNormal
Range("EX50").Select
Bu haliyle çalışıyor. Yani makro çalışınca sayfanızın E3 hücresini diğer sayfalarda arayacak eğer varsa makro duracak. Yoksa devam edip yeni açılan sayfaya E3 hücresinin değerini verecek.
 

batuhanoc

Altın Üye
Katılım
7 Aralık 2006
Mesajlar
29
Excel Vers. ve Dili
Offfice 365 - Türkçe
Altın Üyelik Bitiş Tarihi
19-06-2025
Teşekkür

Kombo arkadaşım bu akşam seni çok yordum. İlgine sonsuz teşekkür ederim. Yazmış olduğunuz kodlar mükemmel çalışıyor.

Batuhan
 
Katılım
17 Şubat 2006
Mesajlar
981
Excel Vers. ve Dili
M.Office Excel 2003 Tr.
Rica ederim. &#304;&#351;inize yarad&#305;&#287;&#305;na sevindim.
&#304;yi geceler dilerim.
 
Katılım
9 Mart 2012
Mesajlar
5
Excel Vers. ve Dili
2007 türkçe
merhaba
benimde benzeri bir sorunum var.Sayfa ekleme işlemini yaptıktan sonra onları isimlendirirken sayfa1 de yer alan bir listedeki değerleri makro her çalıştığında sırası ile sayfa ismi olarak atayabilir mi?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,269
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Ekteki örnek dosyayı inceleyiniz.
 

Ekli dosyalar

Furkan TARAKÇI

Altın Üye
Katılım
15 Şubat 2022
Mesajlar
51
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO (Sürüm 2205 Derleme 16.0.15225.20172) 64 bit Türkçe
Altın Üyelik Bitiş Tarihi
27-05-2027
Merhabalar benimde buna benzer bir sorunum var.

Sheets("ŞABLON").Copy After:=Sheets(Sheets.Count)
[BB6].Value = Format(Now, "dd.mm.yyyy")
ActiveSheet.Name = Format(Now, "yymmdd") + "-" + "aynı isim olunca"

aynı isim olunca yerine ne yazmam gerekir. Yapmak istediğimde kopyalamış olduğum ŞABLON sayfamın ismi o günün YIL AY GÜN formatı gibi yymmdd şeklinde fakat aynı tarihte kopyalamada sıkıntı olmaması için yanında yymmdd-1,2,3,4 gibi sıralasın
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
CoffeeScript:
Sub ekle()
    Dim YeniSayfaİsmi
    YeniSayfaİsmi = Format(Now, "yymmdd") + "-"
    For i = 1 To Sheets.Count
       If Left(Worksheets(i).Name, 7) = YeniSayfaİsmi Then
          Say = Say + 1
       End If
    Next i
    Sheets("ŞABLON").Copy After:=Sheets(Sheets.Count)
    [BB6].Value = Format(Now, "dd.mm.yyyy")
    ActiveSheet.Name = YeniSayfaİsmi & Say + 1
End Sub
 
Üst