For each ile sayfa adını bulma

kadir78

Altın Üye
Katılım
6 Nisan 2016
Mesajlar
227
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
30-12-2026
İyi günler. Aşağıdaki kodlarda For each ile açılan yeni kitapdaki sayfalar içinde, aranan sayfayı bulamıyor. Açılan kitapda 10 adet sayfa var fakat kod ilk sayfaya bakıyor ve arama yapmıyor. Çözemedim yardımcı olurmusunuz.

Kod:
dim s1, s2, syf as worksheet
dim trh as string
dim k1 as workbook

set s1 = sheets("sayfa1")
trh = s1.range("B2").value

workbooks.open ("\data.xlsx")
set k1 = activeworkbook

for each syf In k1.worksheets

    if syf.name = trh then
    set s2 = k1.worksheets(trh)
    else
    exit sub
    end if

next syf
 
Son düzenleme:

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Döngü yerine Fonksiyon kullanmanız daha mantıklı olacaktır. Alternatif olsun.

Kod:
Sub SayfaKontrol()

    Dim k1 As Workbook
    Dim trh As String
    
    trh = "SayfaAdı"
    
    Workbooks.Open ("\data.xlsx")
    Set k1 = ActiveWorkbook
    
    If SayfaVarYok(trh) Then
        MsgBox trh & " Adlı Sayfa Var"
    Else
        MsgBox trh & " Adlı Sayfa Yok"
    End If
    
End Sub
Kod:
Function SayfaVarYok(wksName As String) As Boolean

    On Error Resume Next
    SayfaVarYok = CBool(Len(Worksheets(wksName).Name) > 0)
    
End Function
 

kadir78

Altın Üye
Katılım
6 Nisan 2016
Mesajlar
227
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
30-12-2026
Teşekkür ederim sağolun.
 
Katılım
12 Aralık 2015
Mesajlar
1,207
Excel Vers. ve Dili
Türkçe Ofis 2007
merhaba birde böyle deneyin.
Kod:
Sub a()
Dim s1, s2, syf As Worksheet
Dim trh As String
Dim k1 As Workbook

Set s1 = Sheets("sayfa1")
trh = s1.Range("B2").Value

Workbooks.Open (ThisWorkbook.Path & "\data.xlsx")
Set k1 = ActiveWorkbook

For i = 1 To k1.Worksheets.Count

    If Sheets(i).Name = trh Then
    Set s2 = k1.Worksheets(trh)
    Exit Sub
    End If
Next
End Sub
 

kadir78

Altın Üye
Katılım
6 Nisan 2016
Mesajlar
227
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
30-12-2026
merhaba birde böyle deneyin.
Kod:
Sub a()
Dim s1, s2, syf As Worksheet
Dim trh As String
Dim k1 As Workbook

Set s1 = Sheets("sayfa1")
trh = s1.Range("B2").Value

Workbooks.Open (ThisWorkbook.Path & "\data.xlsx")
Set k1 = ActiveWorkbook

For i = 1 To k1.Worksheets.Count

    If Sheets(i).Name = trh Then
    Set s2 = k1.Worksheets(trh)
    Exit Sub
    End If
Next
End Sub
Kodlar çalışıyor sağolun.
 
Son düzenleme:
Katılım
12 Aralık 2015
Mesajlar
1,207
Excel Vers. ve Dili
Türkçe Ofis 2007
Kodun çalıştığını görmeniz için Msgbox ile mesaj veriyor.
Kod:
Sub a()
Dim s1, s2, syf As Worksheet
Dim trh As String
Dim k1 As Workbook
Set s1 = Sheets("sayfa1")
trh = s1.Range("B2").Value
Workbooks.Open (ThisWorkbook.Path & "\data.xlsx")
Set k1 = ActiveWorkbook
For i = 1 To k1.Worksheets.Count
    If Sheets(i).Name = trh Then
    Set s2 = k1.Worksheets(trh)
   
    Exit for
    End If
Next
 MsgBox s2.Name
End Sub
 
Son düzenleme:

kadir78

Altın Üye
Katılım
6 Nisan 2016
Mesajlar
227
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
30-12-2026
Ben yanlış bir yer yazmışım kusuruma bakmayın. Kodlar çalışıyor çok sağolun emeğinize sağlık olsun teşekkür ederim.
 

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
Kitabı açtıktan sonra döngüye girmeden aşağıdaki satırları kullanarakta sayfanın varlığını kontrol edebilirsiniz.

C++:
On Error Resume Next
Set S2 = Nothing
Set S2 = K1.Sheets(trh)
On Error GoTo 0
If Not S2 Is Nothing Then MsgBox "Sayfa var..."
 

kadir78

Altın Üye
Katılım
6 Nisan 2016
Mesajlar
227
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
30-12-2026
Kitabı açtıktan sonra döngüye girmeden aşağıdaki satırları kullanarakta sayfanın varlığını kontrol edebilirsiniz.

C++:
On Error Resume Next
Set S2 = Nothing
Set S2 = K1.Sheets(trh)
On Error GoTo 0
If Not S2 Is Nothing Then MsgBox "Sayfa var..."
Korhan hocam sağolun. Sayfa için bir kontrol şartına ihtiyaç vardı. Ben bir kontrol şartı yazmayı denedim fakat olmadı, sayfayı bulamazsa hata veriyordu. Emeğinize sağlık.
 

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
Önerimdeki IF sorgu satırına ELSE ekleyerek sayfanın olmaması durumunu da kontrol edebilirsiniz. Sanırım bu değişikliği yapabilirsiniz.
 
Üst