Belirli Hücrelerin, değiştirilmesini ve silinmesini Engelleme

Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Selam Arkadaşlar,
Bir çalışma sayfasındaki A1:G2 haricindeki hücreleri kullanıcı "ergun.guler" değil ise silinmesini, eklenmesini, satır ve sütunların silinmesi, değiştirilmesi, eklemesi, çıkarılmasını engellemek istiyorum.
Bunun için aşağıdaki kodu yazdım. Ancak, sadece uyarı vermesini sağlayabildim. silinme, değiştirme gibi işlemlerini engeleyemedim.
Yardımcı olabilirseniz sevinirim.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
user = Environ("username")
If Intersect(Target, Range("A1:G2")) Is Nothing And user <> "ergun.guler" Then
MsgBox "Yetkiniz yok!", vbCritical, "Sayın " & user
End If
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,092
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

ARAÇLAR-KORUMA menüsündeki "Kullanıcıları Aralıkları Düzenlemesine İzin Ver" seçeneği işinize yarayabilir. İncelermisiniz.
 
Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Selamlar,

ARAÇLAR-KORUMA menüsündeki "Kullanıcıları Aralıkları Düzenlemesine İzin Ver" seçeneği işinize yarayabilir. İncelermisiniz.
Selam,
ilginize çok teşekkür ederim. Çok sağolun.
Ağımızda belki binlerce çok sayıda kullanıcı var. Dosyayı koyduğum bölüm herkese açık. bahsettiğiniz bölümü inceledim. kullanıcıları tek tek girmem gerekiyor galiba. Yani A1:G2 alanını herkese açık olması, geri kalan kısımın ise kendim belirleyeceğim kullanıcılara açık olmasını istiyorum.
Aslında ben makro ile nasıl yapılabilir bunu merak ediyorum. Mantıksız bir soru sormadığımı düşünüyorum.
Sizin belirtiğiniz özelliklerle yapılabilse bile, Bu forumdaki soruların bir çoğu makro olmadan yapılabilecek olmasına rağmen, sorulan sorulara birden fazla alternatif makro ile cevap bulabiliyor. Bu sayede herkes bir dünya şey öğreniyor.
Bu yüzden Makro ile nasıl yapılabildiğini öğrenmeyi istemek çok kötü bir istek olmasa gerek.
Yine de sizden makro ile yardımlarınızı bekliyorum.
İyi çalışmalar.
 
Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
aşağıdaki linkdeki dosyaya bir bakarmısınız belki yardımcı olabilir.

http://www.excel.web.tr/showthread.php?t=85925
Selam Sayın Halit3,
İlginize ve yardımlarınıza çok teşekkür ederim. Verdiğiniz linki inceledim. Eklediğiniz çalışma gerçekten harika bir çalışma. Bu dosyadaki örnekleri inceleyerek sayenizde aşağıdaki kodları oluşturdum.
Kod:
Private Sub Worksheet_Activate()
user = Environ("username")
sifre = "1234"

If user = "ergun.guler" Then
    ActiveSheet.Unprotect Password:=sifre
    Cells.Locked = False

Else

    ActiveSheet.Unprotect Password:=sifre
    
    Cells.Locked = True
    Range("A1:G2").Locked = False
    ActiveSheet.EnableSelection = xlNoRestrictions
    
   ActiveSheet.Protect Password:=sifre, DrawingObjects:=True, Contents:=True, Scenarios:=True _
    , AllowSorting:=True, AllowFiltering:=True

End If
    
End Sub
İstediğim böyle birşeydi. Kullanıcı "ergun.guler" değilse, sadece A1:G2 aralığına müdahale ve süzme ve sıralamaya yapmaya izin veriyor.
Ancak, size bu kodlar üzerinden müsaadenizle bir kaç soru sormak istiyorum;
1-)
Kod:
Else

    [COLOR="Red"][B]ActiveSheet.Unprotect Password:=sifre[/B][/COLOR]
Else'den sonraki kırmızı alanı yazmaz isem, "ergun.guler" değilseniz, dosya 2.kez aktif olunca hata veriyor. Sebebini anlayamadım. Ancak, bu şekilde çözebildim. Sebebi nedir.?

2-)
"ergun.guler" değilseniz kilitli hücrelere müdahalede, excel kendi uyarısını veriyor. Bunun yerine kendimiz bir uyarı verdirebilir miyiz?

3-) sayfa koruma kaldırması "1234"'dür. "ergun.guler" olmayan kişiler "1234" girince sayfayının tümüne müdahale edebiliryorlar. Şöyle bir şey yapabilir miyiz:
"sayfa korumayı kaldır" şeçildiği esnada uyarı verdirebilir miyiz ? diğer kullanıcılar şifreyi bilseler dahi müdahale etmesinler.

Şimdiden çok teşekkür ederim.
İyi çalışmalar.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
sorunu anladığım kadarı ile bu kod işinizi görürmü

Private Sub Worksheet_Activate()
user = Environ("username")
sifre = "1234"
If user = "ergun.guler" Then
ActiveSheet.Unprotect Password:=sifre
Cells.Locked = False
Exit Sub
ElseIf user <> "ergun.guler" Then
a = InputBox("BU BÖLÜME GİRİŞ YAPMANIZ İÇİN ŞEFREYİ YAZINIZ.", "")
If a <> sifre Then
MsgBox "şifre yanlış"
Exit Sub
Else
End If
If a = "" Then
MsgBox "şifre yok"
Exit Sub
End If
If a = sifre Then
ActiveSheet.Unprotect Password:=sifre
Cells.Locked = True
Range("A1:G2").Locked = False
ActiveSheet.EnableSelection = xlNoRestrictions
ActiveSheet.Protect Password:=sifre, DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowSorting:=True, AllowFiltering:=True
End If
End If

End Sub
 
Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Selam Sayın Halit3,
İlginize ve yardımlarınıza çok teşekkür ederim.
Kodlarınızı denedim. kullanıcı "ergun.guler" değilse, şifreyi boş girince veya Inbox'un sağ köşesinde kırmızı X'dan çıkınca yine tüm hücrelere müdahale edilebiliyor.
Bir de sayfa her aktif oluşunda şifre soruyor.
Siz istediğimden fazlasını yapmışsınız.
5.mesajımda sayenizde hazırladığım çözüm bana yeterli. Ancak, diğer sorularım için ise 5.mesajımı yine geçerlidir.
Sizi fazla meşgul etmek istemem ancak 5.mesajıma yeniden bakabilirseniz çok sevinirim.
İyi çalışmalar.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
bu kodu denermisiniz.
yanlış şifre girildiği zaman h1 hücresine gidiyor.

Private Sub Worksheet_Activate()
Range("h1").Select
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A1:G2")) Is Nothing Then
user = Environ("username")
sifre = "1234"
If user = "ergun.guler" Then
ActiveSheet.Unprotect Password:=sifre
Cells.Locked = False
Exit Sub
ElseIf user <> "ergun.guler" Then
a = InputBox("BU BÖLÜME GİRİŞ YAPMANIZ İÇİN ŞEFREYİ YAZINIZ.", "")
If a <> sifre Then
MsgBox "şifre yanlış"
Range("h1").Select: Exit Sub
Else
End If
If a = "" Then
MsgBox "şifre yok"
Range("h1").Select: Exit Sub
End If
If a = sifre Then
ActiveSheet.Unprotect Password:=sifre
Cells.Locked = True
Range("A1:G2").Locked = False
ActiveSheet.EnableSelection = xlNoRestrictions
ActiveSheet.Protect Password:=sifre, DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowSorting:=True, AllowFiltering:=True
End If
End If
End If
End Sub
 
Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Selam,
kullanıcı "ergun.guler" ise tüm hücreler serbest oluyor. doğru.
"ergun.guler" değil ise A1:G2 arasında şifre soruyor. diğer hücreler serbest oluyor. aslında sadece A1:G2 arası serbest olacaktı.
Daha sonra şifre girilince hem A1:G2 arasında şifre soruyor. geri kalan hücreler ise kilitleniyor.

Sizlere çok teşekkür ederim. Çok zahmet ettiniz. her ne kadar sizin son çözümünüz istediğim olmasa bile, çok şey öğrendiğimi belirtmek isterim. Ancak, İsteğim 5.mesajımda belirtiğim gibidir.
İyi çalışmalar.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Selam,
kullanıcı "ergun.guler" ise tüm hücreler serbest oluyor. doğru.
"ergun.guler" değil ise A1:G2 arasında şifre soruyor. diğer hücreler serbest oluyor. aslında sadece A1:G2 arası serbest olacaktı.
Daha sonra şifre girilince hem A1:G2 arasında şifre soruyor. geri kalan hücreler ise kilitleniyor.

Sizlere çok teşekkür ederim. Çok zahmet ettiniz. her ne kadar sizin son çözümünüz istediğim olmasa bile, çok şey öğrendiğimi belirtmek isterim. Ancak, İsteğim 5.mesajımda belirtiğim gibidir.
İyi çalışmalar.
eklediğim yeri kırmızı ile belirtim ancak yanlış şifre gelince H1 hücresi yerine A1 hücresine yönlendiriyor.


Kod:
Private Sub Worksheet_Activate()
Range("A1").Select
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A1:G2")) Is Nothing Then
[COLOR=red]Else
[/COLOR]user = Environ("username")
sifre = "1234"
If user = "ergun.guler" Then
ActiveSheet.Unprotect Password:=sifre
Cells.Locked = False
Exit Sub
ElseIf user <> "ergun.guler" Then
a = InputBox("BU BÖLÜME GİRİŞ YAPMANIZ İÇİN ŞEFREYİ YAZINIZ.", "")
If a <> sifre Then
MsgBox "şifre yanlış"
Range("A1").Select: Exit Sub
Else
End If
If a = "" Then
MsgBox "şifre yok"
Range("A1").Select: Exit Sub
End If
If a = sifre Then
ActiveSheet.Unprotect Password:=sifre
Cells.Locked = True
Range("A1:G2").Locked = False
ActiveSheet.EnableSelection = xlNoRestrictions
ActiveSheet.Protect Password:=sifre, DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowSorting:=True, AllowFiltering:=True
End If
End If
End If
End Sub
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
alternatif olarak aşağıdaki koduda kullanabilirsiniz.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim LastColumn As Integer
Dim LastRow As Long
Dim LastCell As Range
If WorksheetFunction.CountA(Cells) > 0 Then
LastRow = 2
If LastRow <> Rows.Count Then LastRow = LastRow
LastColumn = 7
If LastColumn <> Columns.Count Then LastColumn = LastColumn
ScrollArea = Range(Cells(1, 1), Cells(LastRow, LastColumn)).Address
Else
ScrollArea = ""
End If
End Sub
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
buda başka bir kod
fareyi ve ok düğmelerini bloke ediyor.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
sat = 2
sut = 7
ScrollArea = ""
user = Environ("username")
sifre = "1234"
If user = "ergun.guler" Then
ActiveSheet.Unprotect Password:=sifre
Cells.Locked = False
Exit Sub
ElseIf user <> "ergun.guler" Then
If Not Intersect(Target, Range("A1:G2")) Is Nothing Then: Exit Sub
a = InputBox("BU BÖLÜME GİRİŞ YAPMANIZ İÇİN ŞEFREYİ YAZINIZ.", "")
If a <> sifre Then
MsgBox "şifre yanlış"
If sat <> Rows.Count Then sat = sat
If sut <> Columns.Count Then sut = sut
ScrollArea = Range(Cells(1, 1), Cells(sat, sut)).Address
Else
ScrollArea = ""
End If
End If
End Sub
 
Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Sayın Halit3,
Çok teşekkür ederim. Ellerinize sağlık.
Bir başka soru sorabilir miyim?

bazen If-Then-Else , If-Then-Exit sub sorunları yaşıyorum.

mesela If ..................... Then
msgbox "denemedir"
diyorum.
yani eğer ........ olursa "denemedir" yazsın istiyorum.

kodlar çalışınca ....... olan eylemi kendi gerçekleştiriyor. Oysa ben eylem gerçekleşirse şeklinde istiyorum.

örneğin
If sheets("Sayfa1").Select Then
msgbox "Denemedir"
diyorum.
yani sayfa1 seçilirse "denemedir" yazsın. Oysa makro çalışınca sayfa1'i seçiyor.
Tabiki sheets("Sayfa1").Select yerine benzer kodlar yazınca da oluyor. Neden yapamıyorum? Mantığı nedir?
İyi çalışmalar.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,092
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Ergün bey yazdığınız sorguda siz bir eylem gerçekleştiriyorsunuz. Select komutu seçme eylemini yapar. Sanıyorum siz Sayfa1 aktif olunca yada aktif sayfa adı Sayfa1 ise komutunu uygulamaya çalışıyorsunuz.

Sayfanın aktif olması durumunu ilgili Sayfa1 in kod bölümüne aşağıdaki kodu uygulayarak sorunu çözebilirsiniz.

Kod:
Option Explicit
 
Private Sub Worksheet_Activate()
    MsgBox "DENEME"
End Sub

Eğer modül içinde bu kontrolü sağlamaya çalışıyorsanız aşağıdaki şekilde bir sorgu işinizi görebilir.

Kod:
Option Explicit
 
Sub TEST()
    If ActiveSheet.Name = "Sayfa1" Then
        MsgBox "DENEME"
    End If
End Sub
 
Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Selam Sayın Korhan Ayhan,
Yardımlarınız için çok teşekkür ederim. Sayenizde aşağıdaki gibi kod oluşturdum.
Kod:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
user = Environ("username")
If user <> "ergun.guler" Then
If ActiveSheet.Name = "Sayfa2" Then
MsgBox "Yetkiniz Yok!", vbCritical, "Sayın " & user
[COLOR="Red"]Sheets("Sayfa1").Select[/COLOR]
End If
End If
End Sub
Birinci sorum:
Kırmızı olan kısmı eklemez isem, uyarıdan sonra yine Sayfa2'yi açıyor. İlla bir sayfaya mı yönlendirmem gerekiyor? Bir önceki konuma gitmesi mümkün değil mi?
İkinci sorum: "Sayfa2" aynı zamanda "UserForm1"den de açılabiliyor.
kırmızı renkli kodun yerine
Kod:
UserForm1.Show
koydum. Userform1'den Sayfa2'ye tıkladığımda Bazen direk sayfayı açıyor. Bazen de uyarı vermesine rağmen sayfayı yine açıyor. Anlayamadım?
userform'daki commandbutton'a da mı ayrıca kod yazmam gerekiyor?
İyi çalışmalar.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
öncelikle şunu söylüyeyim
sizin kodlarda belirli bir sayfada işlem yaptırmak veya yaptırmamak mı istiyorsunuz örneğin sayfa2 aktif olunca kodların çalışmamasınımı istiyorsunuz.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
bir sürü kod orneği verdik acaba hangisini kullanıyorsunuz
kullandığınız kodu ve mevcut dosyanızın bir örneğini ekleyin bakalım.
 
Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Örnek hazırladığım dosya ektedir.

"insört-veri" sayfası "ergun.guler" harici görünmemesini sağladım.

(bu sayfa aktif olduğunda önce görünüyor. daha sonra "insört" sayfasına gidiyor. isteğim şu görünmeden uyarı vermesi sağlanır mı?
bir de illa "insört sayfasına mı gitmesi gerekiyor?)


"insörtsorgulama-tekli" sayfası da "ergun.guler" olmayan kişilere kilitli olmasını sadece A1:G2 arası açık olmasını sağladım. Bu aralık Sorgulama için veri girişi yapılan yer.
(isteğim şu kilitli hücrelere müdaha edilince Microsoft'un kendi uyarısı çıkıyor. Bunun yanı sıra kendim de bir uyarı koyabilir miyim?
sizin verdikleriniz hem şifre soruyor. hem de hücreye tıklar tıklamaz uyarı veriyor. oysa ben şifre sormasın ve hücreye tıklayınca değil engellenen yelemler esnasında Microsoftun gibi bir uyarı vermek istiyorum. Tabiki mümkünse)

diğer bazı sayfalarda sadece süzme aktif.

İyi çalışmalar.
 

Ekli dosyalar

Son düzenleme:

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
nasıl açaağız dosyanı
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
İnsörtSorgulama-Tekli sayfasındaki bütün kodları siliniz.
aşağıdaki kodları ekleiyiniz.

Private Sub Worksheet_Activate()
Range("A2").Select
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
sat = 2
sut = 7
ScrollArea = ""
user = Environ("username")
sifre = "1234"
If user = "ergun.guler" Then
ActiveSheet.Unprotect Password:=sifre
Cells.Locked = False
Exit Sub
ElseIf user <> "ergun.guler" Then
If Not Intersect(Target, Range("A1:G2")) Is Nothing Then: Exit Sub
If sat <> Rows.Count Then sat = sat
If sut <> Columns.Count Then sut = sut
ScrollArea = Range(Cells(1, 1), Cells(sat, sut)).Address
Range("A2").Select
Else
ScrollArea = ""
End If
End Sub
 
Üst