• DİKKAT

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

Sayfa (Name) Adının kod ile değiştirlmesi.

Katılım
24 Mart 2005
Mesajlar
230
Excel Vers. ve Dili
Ofice 2010 - Türkçe
SORUNUMu bu iki sordan biri gercekleşirse halletmiş olacağim.


F5 tuşuna kısayol atanırken set s1 = sheets("sayfaadi") ile şeklinde kodu ataya bilirmiyim.

Bu kod çalışmıyor.
Kod:
Set s1 = ActiveSheet
Application.OnKey "{F5}", s1 & ".F5_Calistir"
Yada

VBA da sayfa özelliğindeki (NAME) adını kod ile değiştere bilirmiyim.



Kullandığım kodlarda.
Sayfanin aktif olmasıyla "F5" kisayol tusu na aynı sayfadaki kodu atuyorum.

Kod:
 Application.OnKey "{F5}", "" & ActiveSheet.Name & ".MSGBOX1"

Sayfanın deaktif olması ile de kısa yolu iptal ediyorum


Kod:
 Application.OnKey "{F5}"


Burdaki sıkıntı su. "F5" tuşuna MSGBOX1 makrosunu atarken.
Sayfa Ozelliklerinde Görduğumuz ve sadece oradan elle değiştire bildiğimiz
(NAME) özelliğindeki yazılan ad kullanılıyor.
Fakat bu (NAME) özelliğinde yazılan adı kod ile cagıramadığım gibi değiştiremıyorumda.

"" & ActiveSheet.Name & ".MSGBOX1" atamamın calışması için.
Sayfa Adi (Sheets.Name) ile Sayfa Özelliğindeki (NAME) özelliğini aynı yapıyorum.
Bunuda kod sayfasında sayfa kod modul ozelliğinde el ile yazıyorum.

Kod ile değiştirmek istememin sebibi sayfayı kopyaladığım zaman sayfa adının (sheets.name) ile sayfanın (NAME) özelliğinin her seferde farklılaşacak olması.
Sayfa kopyalandığında kısa yollar calışmıyor.

Sorunu kodları baska bir modulde yazarak çözmüştüm.
Fakat kullanıcı sayfayı başka bir sayfaya kopyaladığında modul kopyalanmadığı için sıkıntı yaşanıyor.
 

Ekli dosyalar

asn = activesheet.name ' önce sayfa ismini alın
' sonra kodunuzu aşağıdaki ile değiştirip deneyin
Application.OnKey "{F5}", "" & asn & ".MSGBOX1"
 
asn = activesheet.name ' önce sayfa ismini alın
' sonra kodunuzu aşağıdaki ile değiştirip deneyin
Application.OnKey "{F5}", "" & asn & ".MSGBOX1"

Zaten öyle yapıyorum. Fakat sayfa koyalandığında sayfa adı ile sayfa modul adı "(NAME)" aynı olmuyor.
Problem makronun sayfa adi ile değil. Sayfanın modul adi yani sayfan özelliklerindeki (NAME) adi ile atana biliyor olması.
 
Sayfa modul adını ( (NAME) özelliğini) kod ile değiştiren bir kod ile karsılaştım. Kod işini görüyor fakat işlemi yatıktan sonra şu hatayı veriyor. "On Local Error Resume Next " kodu ilede atlamıyor. :S.
" can't enter break mode at this time " break moduna gecemediğini söylüyor.

Kod:
sayfaadi = ActiveSheet.Name  
ActiveSheet.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName") = sayfaadi


Burada bir sorunda sayfa adlarının içerdiği karekterler.
Verilen adlarda boşluk olmamalı. Türkce Karakter içermemeli.
Bununla ilgili de biraz kod yazdık mı sıkıntı çözülür.
 
Sorunu çözdüm.
Sorun sayfa kopyalandığında sayfanın (NAME) özelliğinin sayfa adından başka olmasından dolayı kodumun calışamasıydı.

Bende sayfanın (NAME) özelliğini değiştirip sayfa adı ile değiştirirsem sorunu çözebileceğimi düşündüm.

Değiştirmek yerine (NAME) özelliğine yazan adi alarak sorunu cözdüm.

Kod:
Private Sub Worksheet_Activate()

moduladi = ActiveSheet.Parent.VBProject.VBComponents(ActiveSheet.CodeName).Properties("_CodeName")

Application.OnKey "{F5}", "" & moduladi & ".F5_Calistir"
Application.OnKey "{F4}", "" & moduladi & ".F4_Calistir"
Application.OnKey "{F6}", "" & moduladi & ".F6_TekIsaretleKalsir"
Application.OnKey "{F7}", "" & moduladi & ".Karsilastir"
Application.OnKey "{F8}", "" & moduladi & ".KarsılastırmayiKatdet"
Application.OnKey "{F10}", "" & moduladi & ".Detay"

End Sub

Uzun zamandır aklama takılan bu sorunuda çözmüş oldum.

Böylece kodlarımı modullerden değil sayfa kod modullerine yazağım.
Sayfa kopyalandığında da . Kısayollar ile kodlarımı çalıştıra bileceğim.
 
Geri
Üst