• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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

Katılım
7 Aralık 2006
Mesajlar
29
Excel Vers. ve Dili
Offfice 365 - Türkçe
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
 
Forumda arama yaptınız mı?
O kadar çok örnek var ki?

SORU SORMADAN ÖNCE LÜTFEN FORUMDA ARAMA YAPIN.
 
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
 
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
 
Kod:
 ActiveSheet.Name=[E3].Value

Bunu deneyin.
 
&#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.
 
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.
 
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.....
 
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
 
Thisworkbook bolumune asagidaki kodu yapıstırın!

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
ActiveSheet.Name = Range("E3").Value
End Sub
 
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ı.
 
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.
 
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
 
Rica ederim. &#304;&#351;inize yarad&#305;&#287;&#305;na sevindim.
&#304;yi geceler dilerim.
 
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?
 
Merhaba,

Ekteki örnek dosyayı inceleyiniz.
 

Ekli dosyalar

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
 
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
 
Geri
Üst