Hata mesajı yerine istediğim bir mesaj çıkabilir mi

xternet

Altın Üye
Katılım
12 Kasım 2004
Mesajlar
455
Excel Vers. ve Dili
2010 Tr
Altın Üyelik Bitiş Tarihi
12-10-2028
Merhaba arkadaşlar.

Bir sayfada belli bir hücre grubunda yapılan sıralamayı makro olarak kaydettim. Kodu çalıştırınca sıralama yapılıyor. Ancak sayfa genel olarak koruma altında. Bu durumda da sıralama makrosu çalıştırılınca sayfa korumalı olduğundan hata mesajı veriyor. İşi bilen biri için sorun yok. End ile hatayı sonlandırıp korumalar kaldırılıyor ve işleme devam edilebiliyor.

İsteğim şu: sıralama makrosu çalıştırıldığında eğer sayfa korumalı ise sıralama makrosu çalıştırılmadan "Önce sayfa korumalarını kaldırınız" şeklinde bir mesaj versin ve "tamam" butonu ile makro sonlandırılsın.

İyi çalışmalar. Kolay gelsin.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,232
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Kod içinde sıralamadan önce sayfa korumasını kaldırıp, sıralama yaptıktan sonra tekrar sayfa koruması konabilir.

Böyle daha iyi olmaz mı?
 

xternet

Altın Üye
Katılım
12 Kasım 2004
Mesajlar
455
Excel Vers. ve Dili
2010 Tr
Altın Üyelik Bitiş Tarihi
12-10-2028
Onu düşündüm aslında ama 30-40 sayfalık bir çalışma olduğu için her defasında bütün sayfalar kullanıcının önünden geçiyor.
Yinede pratik bir çözüm bulamazsak öyle yapıcam. İlginizden dolayı teşekkür ederim.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,232
Excel Vers. ve Dili
Ofis 365 Türkçe
Tekrar Merhaba,

Zaten kod çalışıyor, bu durumda sıralama yapan kodun önüne şifre kaldırmayı, sonuna ise şifre koymayı yapan kodu ekleyince işlem biter zaten.

Şifre Kaldırmak İçin :

Kod:
ActiveSheet.Unprotect Password:="[B]Şifreniz[/B]"
Şifre Koymak İçin :

Kod:
ActiveSheet.Protect Password:="[B]Şifreniz[/B]", DrawingObjects:=True, Contents:=True, Scenarios:=True
 

xternet

Altın Üye
Katılım
12 Kasım 2004
Mesajlar
455
Excel Vers. ve Dili
2010 Tr
Altın Üyelik Bitiş Tarihi
12-10-2028
Sub sifrele()
For a = 1 To Sheets.Count
Sheets(a).Protect "123" = True
Next
End Sub

Sub sifreac()
For a = 1 To Sheets.Count
Sheets(a).Unprotect "123" = True
Next
End Sub

Benim kullandığım şifre kodu bu. Bu kodda tüm sayfaların kodu ard arda çözülüyor. Sizin verdiğiniz kod sadece aktif sayfa için mi geçerli?
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,232
Excel Vers. ve Dili
Ofis 365 Türkçe
Evet Benim verdiğim kod sadece aktif sayfa için geçerli.

Sizin istediğiniz hata kontrolu :

Kod:
Public Sub sırala()
On Error GoTo Hata
Range("A1:D12").Sort Key1:=[A1]
GoTo Son
Hata:
If Err.Number = 1004 Then
    MsgBox "Sayfa Korumasını Kaldırınız"
    Exit Sub
End If
Son:
End Sub
 

xternet

Altın Üye
Katılım
12 Kasım 2004
Mesajlar
455
Excel Vers. ve Dili
2010 Tr
Altın Üyelik Bitiş Tarihi
12-10-2028
Teşekkür ederim Necdet Bey. Tam düşündüğüm gibi oldu.

İyi çalışmalar.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,232
Excel Vers. ve Dili
Ofis 365 Türkçe
Güle güle kullanınız sayın xternet.
 
Üst