• DİKKAT

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

satıra isim yazdığımda sheet açılması makrosu

  • Konbuyu başlatan Konbuyu başlatan costtex
  • Başlangıç tarihi Başlangıç tarihi
Katılım
11 Temmuz 2017
Mesajlar
14
Excel Vers. ve Dili
TÜRKÇE
merhabalar

ana menu sayfasına isim yazdığımda o isimde bir sheeet açılması ve daha önnceden hazırlamış olduğum sheet içindekileri kopyalaması gerekmektedir.

bu şekilde bir makro yardımı rica edebilirmiyim
 
Merhaba,

Dosyanızda ANA MENÜ ve ŞABLON isminde iki sayfa hazırlayın.

ANA MENÜ sayfasının "B" sütunundaki isimlere göre şablon sayfasının kopyası oluşacak şekilde kodu hazırladım. Deneyebilirsiniz.

Ek olarak oluşan sayfaları silebilmeniz içinde bir kod hazırladım.

Kod:
Sub SAYFALARI_OLUŞTUR()
    Dim S1 As Worksheet, S2 As Worksheet
    Dim S3 As Worksheet, X As Long, Son As Long
    
    Application.ScreenUpdating = False
    
    Set S1 = Sheets("ANA MENÜ")
    Set S2 = Sheets("ŞABLON")
    
    Son = S1.Cells(S1.Rows.Count, 2).End(3).Row
    
    For X = 2 To Son
        Set S3 = Nothing
        On Error Resume Next
        Set S3 = Sheets(S1.Cells(X, 2).Value)
        On Error GoTo 0
        
        If S3 Is Nothing Then
            S2.Copy , Sheets(ThisWorkbook.Worksheets.Count)
            ActiveSheet.Name = S1.Cells(X, 2).Value
            S1.Select
        End If
    Next
    
    Set S1 = Nothing
    Set S2 = Nothing
    Set S3 = Nothing
    
    Application.ScreenUpdating = True
    
    MsgBox "Sayfalar oluşturulmuştur.", vbInformation
End Sub

Sub SAYFALARI_SİL()
    Dim Sayfa As Worksheet, Silinmeyecek_Sayfalar(), Kontrol As Boolean
    
    Application.ScreenUpdating = False
    
    Silinmeyecek_Sayfalar = Array("ANA MENÜ", "ŞABLON")
    
    Application.DisplayAlerts = False
    
    For Each Sayfa In ThisWorkbook.Worksheets
        For X = 0 To UBound(Silinmeyecek_Sayfalar)
            If Silinmeyecek_Sayfalar(X) = Sayfa.Name Then
                Kontrol = True
                Exit For
            End If
        Next
        If Kontrol = False Then
            Sayfa.Delete
        Else
            Kontrol = False
        End If
    Next

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    
    MsgBox "Sayfalar silinmiştir.", vbInformation
End Sub
 
Ana menu isimli sayfanın C2 hücresine yazdığınız isimle yeni sayfa açar.Diğer istekleriniz için örnek dosya üzerinden gitmek gerekir. Ana menu sayfasının kodu olarak kopyalayınız C2 hücresini kendinize göre ayarlayınız.Kolay gelsin.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("C2")) Is Nothing Then Exit Sub
For i = 1 To Worksheets.Count
        If Worksheets(i).Name = Worksheets("Ana menu").Range("C2").Value Then
            MsgBox "Bu isimde bir sayfa bulundu"
        Exit Sub
        End If
    Next i
  Worksheets.Add After:=Sheets(Worksheets.Count)
  ActiveSheet.Name = Worksheets("Ana menu").Range("C2").Value
End Sub
Sayın Korhan Ayhan Beyin cevabını zaman farkı nedeniyle görmedim .özür dilerim.
 
Son düzenleme:
Yardımlarınız için teşekkür ederim fakat satıra yazdığım isim sheet ismi olmuyor. Birde daha önce aktarılan isimi tekrar açıyor

döngü olarak açılan bir şheet varsa değiştirsinde olabilirmi
 
Korhan Bey'in başta yazdıklarını yaptınız mı?
1) ANA MENÜ isminda sayfa açınız.
2) ŞABLON isminde sayfa açınız. (Yazılarına dikkat ediniz büyük harf)
3)Bir modül açınız ve bu modüle kodları kopyalayınız.
4) Bir düğmeye atayınız.(Sayfa oluştur makrosunu)
5)B sütununa sayfa isimleri yazınız.
Örn(B2 hücresine Ahmet yazınız)
Düğmeyi tıklayınız. Sayfa oluşaçaktır.Sayın costtex ben denedim bu şekilde kodlar çalışıyor.Bir yerde hata yapıyorsunuzdur.Kolay gelsin.
 
Son düzenleme:
Yok dediklerini aynen yaptım fakat aynı ismi bir kaç defa açıyor.

Aynı ismi kontrol etmesi lazım kontrol yapmadığı için b sütununa yazdığı isim bir kez daha açıyor.

Sanırım bir döngü kurmamız lazım. Döngüde olursa çok güzel olacak
 
Aynı sayfayı oluşturmaz. Kod içinde sayfa kontrolü yapılıyor. Sizin dosyanızda bir sorun olabilir.
 
Merhaba,

Dosyanızda ANA MENÜ ve ŞABLON isminde iki sayfa hazırlayın.

ANA MENÜ sayfasının "B" sütunundaki isimlere göre şablon sayfasının kopyası oluşacak şekilde kodu hazırladım. Deneyebilirsiniz.

Ek olarak oluşan sayfaları silebilmeniz içinde bir kod hazırladım.

Kod:
Sub SAYFALARI_OLUŞTUR()
    Dim S1 As Worksheet, S2 As Worksheet
    Dim S3 As Worksheet, X As Long, Son As Long
    
    Application.ScreenUpdating = False
    
    Set S1 = Sheets("ANA MENÜ")
    Set S2 = Sheets("ŞABLON")
    
    Son = S1.Cells(S1.Rows.Count, 2).End(3).Row
    
    For X = 2 To Son
        Set S3 = Nothing
        On Error Resume Next
        Set S3 = Sheets(S1.Cells(X, 2).Value)
        On Error GoTo 0
        
        If S3 Is Nothing Then
            S2.Copy , Sheets(ThisWorkbook.Worksheets.Count)
            ActiveSheet.Name = S1.Cells(X, 2).Value
            S1.Select
        End If
    Next
    
    Set S1 = Nothing
    Set S2 = Nothing
    Set S3 = Nothing
    
    Application.ScreenUpdating = True
    
    MsgBox "Sayfalar oluşturulmuştur.", vbInformation
End Sub

Sub SAYFALARI_SİL()
    Dim Sayfa As Worksheet, Silinmeyecek_Sayfalar(), Kontrol As Boolean
    
    Application.ScreenUpdating = False
    
    Silinmeyecek_Sayfalar = Array("ANA MENÜ", "ŞABLON")
    
    Application.DisplayAlerts = False
    
    For Each Sayfa In ThisWorkbook.Worksheets
        For X = 0 To UBound(Silinmeyecek_Sayfalar)
            If Silinmeyecek_Sayfalar(X) = Sayfa.Name Then
                Kontrol = True
                Exit For
            End If
        Next
        If Kontrol = False Then
            Sayfa.Delete
        Else
            Kontrol = False
        End If
    Next

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    
    MsgBox "Sayfalar silinmiştir.", vbInformation
End Sub

Korhan bey kod bir çalışmam için çok işime yaradı. Teşekkür..
Sizden bir tek şey isteyeceğim.

Sayfalar B sütunundaki isimlere göre açılıyor. Ben istiyorum ki ANA MENÜ sayfasındaki B sütununda yazılı Ahmet isiminde açılan sayfanın B1 Hücresine de Ahmet Yazsın..Tabi tüm isimlerde aynı olacak..
 
ActiveSheet.Name = S1.Cells(X, 2).Value . Bu satırdan sonra
Kod:
Range("B1") = ActiveSheet.Name
Satırını ilave ediniz.Kolay gelsin
 
Range("B1") = ActiveSheet.Name
Ben bunu denemiştim ama kodun sonuna koymuştum sizin dediğiniz yerde denedim oldu. Çok teşekkür ederim.
 
Range("B1") = ActiveSheet.Name
Ben bunu denemiştim ama kodun sonuna koymuştum sizin dediğiniz yerde denedim oldu. Çok teşekkür ederim.
Rica ederim.Dönüş yaptığınız için teşekkür ederim.
 
Geri
Üst