Çözüldü sayfa ismi kontrolü ve "if"

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
526
Excel Vers. ve Dili
2016 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Merhaba,
ekli örnek dosyamda, düğme ile sayfa kopyalaması yapıyorum. Kodlara göre sayfa ismini atarken ilk ve ikinci kelimelerin ilk harflerini alıyor, araya tire koyarak işlem yapıyor.
Ancak 2. kez bastığımda sayfa ismi aynı olacağından hata veriyor. yapmak istediğim şey, sayfa isimlerini kontrol ederek, eğer bu sayfa isminden varsa ilk kelimenin ikinci ve ikinci kelimenin de ikinci harflerini de alarak bir isim ataması.

açıklama uzun oldu ama aslında yapmaya çalıştığım kısaca şu:

eğer atamaya çalıştığın worksheets.name bu dosyada yoksa şu kodları uygula

Kod:
ikinci = Evaluate("=IFERROR(MID(c1,FIND("" "",c1,1)+1,1),"""")")
sh.Copy After:=Sheets(sh.Name)
ActiveSheet.Name = UCase(Left(sh.[c1], 1) & ikinci) & "_" & Range("d1").Value
atamaya çalıştığın worksheets.name bu dosyada varsa o zaman da bu kodları uygula

Kod:
ikinci = Evaluate("=IFERROR(MID(c1,FIND("" "",c1,1)+1,2),"""")")
sh.Copy After:=Sheets(sh.Name)
ActiveSheet.Name = UCase(Left(sh.[c1], 2) & ikinci) & "_" & Range("d1").Value
Internette araştırdım, function olarak sayfa ismi araması yapan kodlar var ancak benim kodlarıma ekleyemedim.

Teşekkürler.
 

Ekli dosyalar

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,819
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Aşağıdaki kodları deneyin.

Kod:
Private Sub CommandButton1_Click()
    Dim sh As Worksheet
    Dim syf As Worksheet
    Dim YeniSayfaAdi As String
    Dim SayfaAdiVar As Boolean
    Dim Bak As Integer
    
    Set sh = Sheets(ActiveSheet.Name)
    Application.DisplayAlerts = False
    If sh.[c1] = "" Then
        MsgBox " c1 hücresi boş olduğundan işlem yapılmadı.."
        Exit Sub
    End If

    Do
        Bak = 1 + Bak
        ikinci = Evaluate("=IFERROR(MID(c1,FIND("" "",c1,1)+1," & Bak & "),"""")")
        YeniSayfaAdi = UCase(Left(sh.[c1], Bak) & ikinci) & "_" & Range("d1").Value
        For Each syf In ThisWorkbook.Worksheets
            If syf.Name = YeniSayfaAdi Then
                SayfaAdiVar = True
                GoTo var
            End If
        Next
        Exit Do
var:
    Loop
    sh.Copy After:=Sheets(sh.Name)
    ActiveSheet.Name = YeniSayfaAdi
    Application.DisplayAlerts = True
End Sub
 
Son düzenleme:

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
526
Excel Vers. ve Dili
2016 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Mükemmel bir çözüm.
Teşekkürler, saygılar.
 
Üst