• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Sayfa Korunduğunda İşlev Yapmayan Macro?

  • Konbuyu başlatan Konbuyu başlatan alooo
  • Başlangıç tarihi Başlangıç tarihi
Katılım
20 Eylül 2006
Mesajlar
77
Excel Vers. ve Dili
Excel 2013 TR
Arkadaşlar,
Aşağıda kodunu verdiğim macro, sayfa koruması yapıldığında (herhangi bir hata vermemesine rağmen) işlevini yerine getirmemektedir. Bu problemi gidermenin bir yolu var mıdır? Çünkü mutlak suretle sayfayı korumam gerekiyor :(

Bu kod, I5 hücresinde yazılı isme göre aynı klasörde yer alan resmi 100x75 ebatlarında D7 hücresine getirmektedir.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, [I5]) Is Nothing Then Exit Sub
ActiveSheet.Shapes("resim").Delete
[d7].Select
ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & [I5] & ".jpg").Select
Selection.Name = "resim"
Selection.ShapeRange.Height = 100
Selection.ShapeRange.Width = 75
[I5].Select
End Sub


Not: Bundan farklı olarak; hazırladığım menüyü .xla yapıp her dosyada görünmesini, gerektiğinde menüden direkt olarak işlem istenilen sayfanın gelmesini istiyorum.

Bunu yaptığımda macrolarda problem yaşıyorum çünkü yolu bulamıyor. Yani c:\veli\ahmet.xls dosyasındaki "ali" makrosu, menü makrosunda "ali" diye yazıldığı için bulunamıyor (yapmak istediğim ise ahmet.xls dosyasındaki ali sayfasına gitmesi). Menü makrosunda tam adresi göstermek için gerekli şey nedir bulamadım. Zira kendi dosyasında işlem gören menü başka bir dosya açıldığında işlem görmemektedir.

İkinci sorumla da ilgilenirseniz sevinirim.

Saygılarımla...
 
İlk sorunuza şu şekilde bir çözüm getirebiliriz:
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
[color=red][b]Activesheet.Unprotect[/b][/color]
If Intersect(Target, [I5]) Is Nothing Then Exit Sub
ActiveSheet.Shapes("resim").Delete
[d7].Select
ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & [I5] & ".jpg").Select
Selection.Name = "resim"
Selection.ShapeRange.Height = 100
Selection.ShapeRange.Width = 75
[I5].Select
[color=red][b]Activesheet.Protect[/b][/color]
End Sub
 
sayın ceyrek,
verdiğiniz kodu girip sayfayı koruduktan sonra "tablo korumasını kaldır" şeklinde bir pencere açılıyor. sayfa koruma şifresini girdikten sonra ise işlem yapılıyor. Bu koda bir ilave yaparak (bir bölümüne sayfa koruma şifresini yazarak) bu pencerenin açılmadan işlem görmesini sağlamamız mümkün müdür acaba?
 
I5 hücresini kilitlemenin dışında bırakmanız yeterlidir. Sağ klik-hücre biçimlendir-koruma sekmesinde kilitli kutusundaki işareti kaldırın ve ondan sonra sayfaya koruma koyun. Diğer sorunuza gelince bir eklentinin her dosyada işlev görnesi için direk dosya adı içermeyen izafi tanımlamalar kullanmanız gerekir örneğin workbook(....) yerine activeworkbook gibi.
 
Diğer sorunuza gelince bir eklentinin her dosyada işlev görnesi için direk dosya adı içermeyen izafi tanımlamalar kullanmanız gerekir örneğin workbook(....) yerine activeworkbook gibi.

sayın leventm,
menüden, açık olan (bu dosya sabit bir dosya, yani herhangi bir dosya değil) bir dosyadaki şu sayfaya git deme ihtimalimiz yok mudur?

Örneğin;
Sürekli açık olan c:\A\a.xls dosyanının içindeki 1 sayfasına veya a.xls dosyasının 2 sayfasına (menü seçimine göre) gidecek bir macro.

yukarıdaki örneğe göre bir makro yazma ihtimaliniz versa sevinirim.
 
Sayfanıza bir tane combobox ekleyip bu kodları da eklerseniz çalışır.
İyi çalışmalar...
Kod:
Private Sub ComboBox1_Change()
Dim aa As String
aa = ComboBox1.Text
bb = Split(aa, ":")
Workbooks(bb(0)).Sheets(bb(1)).Activate
End Sub

Private Sub Worksheet_Activate()
ComboBox1.Clear
Dim i, y As Integer
For i = 1 To Workbooks.Count
For y = 1 To Workbooks(i).Sheets.Count
ComboBox1.AddItem Workbooks(i).Name & ":" & Workbooks(i).Sheets(y).Name
Next
Next
End Sub
 
Son düzenleme:
Geri
Üst