Son çıkış yaptığımız Sayfaya geri Dönmek

Tarikkk_

Altın Üye
Katılım
5 Ocak 2020
Mesajlar
405
Excel Vers. ve Dili
Excel 2019
Altın Üyelik Bitiş Tarihi
26-10-2028
Merhabalar.
Workbook_SheetDeactivate bölümüne aşağıdaki kodu kullanarak en son çıkış yaptığım sayfa ismini Sonsayfa değişkenine atadıktan sonra

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
SonSayfa = Sh.Name
End Sub

gittiğim sayfadan bir önceki sayfaya dönmek için aşağıdaki kodu kullandığımda hata alıyorum. nerede yanlış yaptığımı bulamadım. yardımlarınızı bekliyorum şimdiden teşekkür ederim.
Sheets(SonSayfa).Select
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Sorunuz net değil.
Dönüş kodunu aynı kodun içinde mi kullanıyorsunuz. Aşağıdaki gibi deneyiniz.

Application.EnableEvents = False
Sheets(SonSayfa).Select
Application.EnableEvents = True

Eğer modulde kullanacaksanız aşağıdaki gibi deneyiniz.
Kod:
Public SonSayfa
Sub test()
    Sheets(SonSayfa).Select 
End Sub
 

Tarikkk_

Altın Üye
Katılım
5 Ocak 2020
Mesajlar
405
Excel Vers. ve Dili
Excel 2019
Altın Üyelik Bitiş Tarihi
26-10-2028
hocam bu şekilde hata alıyorum örnek dosya attım teşekkür ederim
 

Ekli dosyalar

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Yapmak istediğiniz nedir?
Sayfa1 in çıkışına kodları koymuşsunuz. Giriş yaptığınız sayfayı kontrol edip şarta göre eski sayfaya dönüş yaptırmışsınız. Bana mantıklı gelmedi. Bu şekilde giriş yapacağınız sayfayı nasıl düzelteceksiniz.

Sizin istediğiniz gibi:
Sayfa1 deki ve BuÇalışmaKitabı sayfasındaki kodları silip aşağıdaki kodları BuÇalışmaKitabı sayfasına ekleyiniz.
Kod:
Dim SonSayfa
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    SonSayfa = Sh.Name
    If ActiveSheet.Name <> "Sayfa1" Then
        Dim son As Long, i As Long, s As Byte
        son = Range("D4:H" & Rows.Count).Find("*", , , , xlByRows, xlPrevious).Row
        For i = 5 To son
            s = WorksheetFunction.CountA(Cells(i, "D").Resize(1, 4))
            If s = 4 And Cells(i, "H") = "" Then
                Application.EnableEvents = False
                Sheets(SonSayfa).Select
                Application.EnableEvents = True
                Cells(i, "H").Select
                Exit Sub
            End If
        Next i
    End If
End Sub
 

Tarikkk_

Altın Üye
Katılım
5 Ocak 2020
Mesajlar
405
Excel Vers. ve Dili
Excel 2019
Altın Üyelik Bitiş Tarihi
26-10-2028
Hocam haklısınız yanlışlıkla Giriş yaptığım sayfayı kontrol edip şarta göre eski sayfaya dönüş yaptırmışım. aslında amacım çıkış yaptığım sayfayı kontrol ettirmek ve boşluk varsa önceki sayfaya geri dönmek tüm kodlar çalışıyor tek sorun Sayfa ismi yerine SonSayfa yazdığımda hata veriyor
ama SonSayfa yerine yani değişken yerine sayfa isimlerini yazdığımızda sorunsuz çalışıyor.
örnek dosyayı düzenleyip attım teşekkür ederim.

Çalışan kod
Sheets("Sayfa1").Select
SonSatır = Sheets(Sayfa1).Cells(Rows.Count, "D").End(3).Row


Çalışmayan Kod
Sheets(SonSayfa ).Select
SonSatır = Sheets(SonSayfa).Cells(Rows.Count, "D").End(3).Row
 

Ekli dosyalar

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
O halde konuyla ilgili sayfalara yazılan eski kodların tamamını(BuÇalışmaKitabı dahil) silip, sadece BuÇalışmaKitabı sayfasına aşağıdaki kodları ekleyip deneyiniz.
Kod:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    Dim son As Long, i As Long, s As Byte, S1 As Worksheet
    Set S1 = Sheets(Sh.Name)
    son = S1.Range("D4:H" & Rows.Count).Find("*", , , , xlByRows, xlPrevious).Row
    For i = 5 To son
        s = WorksheetFunction.CountA(S1.Cells(i, "D").Resize(1, 4))
        If s = 4 And S1.Cells(i, "H") = "" Then
            Application.EnableEvents = False
            S1.Select
            Application.EnableEvents = True
            S1.Cells(i, "H").Select
            Exit Sub
        End If
    Next i
End Sub
 

Tarikkk_

Altın Üye
Katılım
5 Ocak 2020
Mesajlar
405
Excel Vers. ve Dili
Excel 2019
Altın Üyelik Bitiş Tarihi
26-10-2028
hocam dediğiniz şekilde yaptım kod çalışmıyor dosya attım kontrol edebilirsiniz
 

Ekli dosyalar

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
1) Kodları sayfa1 e değil BuÇalışmaKitabı bölümüne kopyalamanız gerekir.
2) Son örnek dosya diğerleriyle aynı değil, diğerleri D:H aralığını kapsıyordu, son örnek D:F aralığını kapsıyor ?

.
 

Tarikkk_

Altın Üye
Katılım
5 Ocak 2020
Mesajlar
405
Excel Vers. ve Dili
Excel 2019
Altın Üyelik Bitiş Tarihi
26-10-2028
hocam kodları söylediğiniz şekilde düzenledim çalışma kitabına koydum bu sefer sayfa1 den çıkış yapınca çalışıyor fakat sayfa2 den çıkış yapınca çalışmıyor birde son olarak kodun başına çalışmasını istediğim sayfaları belirtmek istiyorum. mesela sayfa1 yada sayfa2 ise çalışsın ama çalışma kitabımdaki diğer sayfalarda çalışmasın gibi
 

Ekli dosyalar

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Son düzenlemeden sonra çalışmayan dosyayı ekler misiniz.
 

Tarikkk_

Altın Üye
Katılım
5 Ocak 2020
Mesajlar
405
Excel Vers. ve Dili
Excel 2019
Altın Üyelik Bitiş Tarihi
26-10-2028
Hocam son attığım dosya burada sadece sayfa1 den çıkış yapınca çalışmakta birde kodun başına sadece çalışmasını istediğim sayfaları belirtmek istiyorum. Mesela sayfa ismi sayfa1 yada sayfa2 ise çalışsın gibi sizide yordum kusura bakmayın ilginiz için çok teşekkür ederim
 

Tarikkk_

Altın Üye
Katılım
5 Ocak 2020
Mesajlar
405
Excel Vers. ve Dili
Excel 2019
Altın Üyelik Bitiş Tarihi
26-10-2028
hocam kodları söylediğiniz şekilde düzenledim çalışma kitabına koydum bu sefer sayfa1 den çıkış yapınca çalışıyor fakat sayfa2 den çıkış yapınca çalışmıyor birde son olarak kodun başına çalışmasını istediğim sayfaları belirtmek istiyorum. mesela sayfa1 yada sayfa2 ise çalışsın ama çalışma kitabımdaki diğer sayfalarda çalışmasın gibi
Hocam son attığım dosya burada sadece sayfa1 den çıkış yapınca çalışmakta birde kodun başına sadece çalışmasını istediğim sayfaları belirtmek istiyorum. Mesela sayfa ismi sayfa1 yada sayfa2 ise çalışsın gibi sizide yordum kusura bakmayın ilginiz için çok teşekkür ederim
 

Tarikkk_

Altın Üye
Katılım
5 Ocak 2020
Mesajlar
405
Excel Vers. ve Dili
Excel 2019
Altın Üyelik Bitiş Tarihi
26-10-2028
hocam kodları söylediğiniz şekilde düzenledim çalışma kitabına koydum bu sefer sayfa1 den çıkış yapınca çalışıyor fakat sayfa2 den çıkış yapınca çalışmıyor birde son olarak kodun başına çalışmasını istediğim sayfaları belirtmek istiyorum. mesela sayfa1 yada sayfa2 ise çalışsın ama çalışma kitabımdaki diğer sayfalarda çalışmasın gibi
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Siz verdiğim kodu değil farklı bir kod kullanmışsınız ve Sayfa1 in kod sayfasındaki kodu silmemişsiniz. Bunların silinmesi gerektiğini yazmıştım.

Eğer kod yapısı olarak bu kodları kullanacaksanız(sayfa yapınız değişmiş sanırım) aşağıdaki kodları BuÇalışmaKitabı bölümüne kopyalayınız.
Yalnız daha öncede söylediğim gibi, diğer sayfalardaki bu işi yapan kodları silmeniz gerekir.
Kod:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    Dim SonSatır As Long, i As Long, S1 As Worksheet
   
    Set S1 = Sheets(Sh.Name)
   
    SonSatır = S1.Cells(Rows.Count, "D").End(3).Row
   
    For i = 5 To SonSatır
     
      If S1.Cells(i, "D") <> "" And S1.Cells(i, "E") <> "" Then
          If S1.Cells(i, "F") = "" Then
                Application.EnableEvents = False
                S1.Select
                Application.EnableEvents = True
                S1.Cells(i, "F").Select
                Exit Sub
           End If
        End If
    Next i

End Sub


Sayfa sınırlaması yapacaksanız aşağıdaki gibi kullanabilirsiniz.
Yalnız önce yukarıdaki kodların çalışması deneyin, eğer sorun yoksa yukarıdaki kodları silip aşağıdaki kodları denersiniz.
Kod:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    Dim SonSatır As Long, i As Long, S1 As Worksheet
   
    Set S1 = Sheets(Sh.Name)
   
    Select Case S1.Name
        Case "Sayfa2", "Sayfa3" 'kontrolü yapılacak sayfalar

        SonSatır = S1.Cells(Rows.Count, "D").End(3).Row
       
        For i = 5 To SonSatır
         
          If S1.Cells(i, "D") <> "" And S1.Cells(i, "E") <> "" Then
              If S1.Cells(i, "F") = "" Then
                    Application.EnableEvents = False
                    S1.Select
                    Application.EnableEvents = True
                    S1.Cells(i, "F").Select
                    Exit Sub
               End If
            End If
        Next i
       
    End Select

End Sub
 

Tarikkk_

Altın Üye
Katılım
5 Ocak 2020
Mesajlar
405
Excel Vers. ve Dili
Excel 2019
Altın Üyelik Bitiş Tarihi
26-10-2028
Hocam kodları bu şekilde çalıştırabildim sadece sayfa1 ve sayfa2 de çalışmasını istediğim için If ActiveSheet.Name = "Sayfa1" Or "Sayfa2" Then kodunu eklemek isteyince hata alıyorum aktif sayfa ismi sayfa1 veya sayfa2 olarak eklemeye çalışıyorum nereden yanlış yapıyorum anlamadım. yardımınızı bekliyorum teşekkür ederim

Kod:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)

    Dim son As Long, i As Long, s As Byte, S1 As Worksheet
    Set S1 = Sheets(Sh.Name)
    
    
   If ActiveSheet.Name = "Sayfa1" Or "Sayfa2" Then
    
    
     SonSatır = S1.Cells(Rows.Count, "D").End(3).Row
    
            For i = 5 To SonSatır
        
        If S1.Cells(i, "D") <> "" And S1.Cells(i, "E") <> "" Then
    If S1.Cells(i, "F") = "" Then
    

        Application.EnableEvents = False
        S1.Select
        Application.EnableEvents = True
        S1.Cells(i, "F").Select
        MsgBox "Fiyat Boş"
        Exit Sub
 
        End If
        End If
    Next i
End Sub
 

Tarikkk_

Altın Üye
Katılım
5 Ocak 2020
Mesajlar
405
Excel Vers. ve Dili
Excel 2019
Altın Üyelik Bitiş Tarihi
26-10-2028
Siz verdiğim kodu değil farklı bir kod kullanmışsınız ve Sayfa1 in kod sayfasındaki kodu silmemişsiniz. Bunların silinmesi gerektiğini yazmıştım.

Eğer kod yapısı olarak bu kodları kullanacaksanız(sayfa yapınız değişmiş sanırım) aşağıdaki kodları BuÇalışmaKitabı bölümüne kopyalayınız.
Yalnız daha öncede söylediğim gibi, diğer sayfalardaki bu işi yapan kodları silmeniz gerekir.
Kod:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    Dim SonSatır As Long, i As Long, S1 As Worksheet
  
    Set S1 = Sheets(Sh.Name)
  
    SonSatır = S1.Cells(Rows.Count, "D").End(3).Row
  
    For i = 5 To SonSatır
    
      If S1.Cells(i, "D") <> "" And S1.Cells(i, "E") <> "" Then
          If S1.Cells(i, "F") = "" Then
                Application.EnableEvents = False
                S1.Select
                Application.EnableEvents = True
                S1.Cells(i, "F").Select
                Exit Sub
           End If
        End If
    Next i

End Sub


Sayfa sınırlaması yapacaksanız aşağıdaki gibi kullanabilirsiniz.
Yalnız önce yukarıdaki kodların çalışması deneyin, eğer sorun yoksa yukarıdaki kodları silip aşağıdaki kodları denersiniz.
Kod:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    Dim SonSatır As Long, i As Long, S1 As Worksheet
  
    Set S1 = Sheets(Sh.Name)
  
    Select Case S1.Name
        Case "Sayfa2", "Sayfa3" 'kontrolü yapılacak sayfalar

        SonSatır = S1.Cells(Rows.Count, "D").End(3).Row
      
        For i = 5 To SonSatır
        
          If S1.Cells(i, "D") <> "" And S1.Cells(i, "E") <> "" Then
              If S1.Cells(i, "F") = "" Then
                    Application.EnableEvents = False
                    S1.Select
                    Application.EnableEvents = True
                    S1.Cells(i, "F").Select
                    Exit Sub
               End If
            End If
        Next i
      
    End Select

End Sub
Çok faydalı oldu gerçekten. Çok teşekkür ederim
 
Üst