Makro calistirmayi Anamenüden engellemek

Katılım
3 Nisan 2006
Mesajlar
118
Excel Vers. ve Dili
Vers. 2013 Almanca
Merhaba arkadaslar,

Benim VBA da Modul'ün icerisinde ikitane Makrolarim var. Bu Makrolari SpinButtona yazdim ve cok güzel calisiyor. Ayni Makrolari Sayfa1 deki Anamenülerden "Araclar-Makro-Makros" tan da calistirilabiliyor.

Benim arzum Sayfa1 deki "Araclar-Makro-Makrolar" a tikladigimda Makrolar görünmesin ve calistirilamasin. Makrolar saadece SpinButton'a tikladigimizda calissin. Neden böyle düsünüyorum: Kayitlarimi sayfa üzerinde tamamladiktan sonra SpinButton'un Enabeld'ini = False yapacagim. Bu sekilde SpinButton'la yapilacak kaydi engellemis olabiliyorum. Ama bir arkadasim Sayfa üzerinden "Araclar-Makro-Makrolar" a tiklarsa benim yaptigim kayitlari tekrar degistirir. Ben bunu nasil engelleyebilirim.
Ben söyle birsey denedim ve biraz becerebildim ama tam degil, cünkü hata veriyor. Gelen hata sudur (Sub veya Function tanimlanmadi) Neyi ve nasil tanimlamaliyim. Bence "Dim ....As....Integer" olarak tanimlamam lazim ama neyi?

Kodlar asagidaki gibi:
Private Sub SpinButton1_Change()
Cells(1, 3) = SpinButton1
ArkacepheRenkleriniSil1
ikivardiyeKaydet
End Sub

Kod 1: SpinButton ile güzel calisiyor.
Option Explicit
Sub ArkacepheRenkleriniSil1()
Worksheets("izinplani").Range("B4:B399").Interior.ColorIndex = xlNone
End Sub

Sub ikivardiyeKaydet()
Set s1 = Sheets("Urlaubsplan")
dega = Array("", "SK", "SK", "SK", "SK", "SK", "", "", _
"FH", "FH", "FH", "FH", "FH", "", "", "SH", "SH", "SH", _
"SH", "SH", "", "", "FK", "FK", "FK", "FK", "FK", "", "")

degb = Array("", "FK", "FK", "FK", "FK", "FK", "", "", _
"SK", "SK", "SK", "SK", "SK", "", "", "FH", "FH", "FH", _
"FH", "FH", "", "", "SH", "SH", "SH", "SH", "SH", "", "")

degc = Array("", "FH", "FH", "FH", "FH", "FH", "", "", _
"SH", "SH", "SH", "SH", "SH", "", "", "FK", "FK", "FK", _
"FK", "FK", "", "", "SK", "SK", "SK", "SK", "SK", "", "")

For a = 4 To 31
fark = (s1.Cells(a, "c") - DateSerial(2006, 1, 1)) / 28
s1.Range(Cells(a, "u"), s1.Cells(a, "u")) = dega((fark - Int(fark)) * 28)
s1.Range(Cells(a, "v"), s1.Cells(a, "v")) = degb((fark - Int(fark)) * 28)
s1.Range(Cells(a, "w"), s1.Cells(a, "w")) = degc((fark - Int(fark)) * 28)

Next
For b = 32 To s1.[c65536].End(3).Row Step 28
s1.Range("u" & b & ":w" & b + 29) = s1.Range("u4:w31").Value
Next
End Sub

Kod 2: Degisikligi asagidaki gibi "Private Sub" olarak yaptim ve Makrolar hala Moduldedirler. Bu sekilde Makrolari görünmez hale getirebildim. Ama bu defa Kodlar SpinButton ile calismaz hale geldi ve yukaridaki yazdigim hatayi verdi.
Option Explicit
Private Sub ArkacepheRenkleriniSil1()
Worksheets("izinplani").Range("B4:B399").Interior.ColorIndex = xlNone
End Sub

Private Sub ikivardiyeKaydet()
Set s1 = Sheets("Urlaubsplan")
dega = Array("", "SK", "SK", "SK", "SK", "SK", "", "", _
"FH", "FH", "FH", "FH", "FH", "", "", "SH", "SH", "SH", _
"SH", "SH", "", "", "FK", "FK", "FK", "FK", "FK", "", "")

degb = Array("", "FK", "FK", "FK", "FK", "FK", "", "", _
"SK", "SK", "SK", "SK", "SK", "", "", "FH", "FH", "FH", _
"FH", "FH", "", "", "SH", "SH", "SH", "SH", "SH", "", "")

degc = Array("", "FH", "FH", "FH", "FH", "FH", "", "", _
"SH", "SH", "SH", "SH", "SH", "", "", "FK", "FK", "FK", _
"FK", "FK", "", "", "SK", "SK", "SK", "SK", "SK", "", "")

For a = 4 To 31
fark = (s1.Cells(a, "c") - DateSerial(2006, 1, 1)) / 28
s1.Range(Cells(a, "u"), s1.Cells(a, "u")) = dega((fark - Int(fark)) * 28)
s1.Range(Cells(a, "v"), s1.Cells(a, "v")) = degb((fark - Int(fark)) * 28)
s1.Range(Cells(a, "w"), s1.Cells(a, "w")) = degc((fark - Int(fark)) * 28)

Next
For b = 32 To s1.[c65536].End(3).Row Step 28
s1.Range("u" & b & ":w" & b + 29) = s1.Range("u4:w31").Value
Next
End Sub

Arkadaslar aceba Makrolari görünmez hale getirmek mümkün mü?

Saygilarimla
kaleci
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,354
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Aslında sadece makro isim listesini gizlemekse, cevap sorunuzdan çok daha kısadır.
Modülünüzün en üst kısmına (Varsa diğer Modüllere de)
Kod:
Option Private Module
 
Katılım
3 Nisan 2006
Mesajlar
118
Excel Vers. ve Dili
Vers. 2013 Almanca
Sayin anemos,

Bu özelligi bilmiyordum ve tam böyle olmasini istiyordum. Yardimlarinizdan dolayi tesekkür ederim. Iyi haftasonu gecirmenizi ve calismalarinizda basarili olmanizda da dilerim.

Saygilarimla
kaleci
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,354
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Şunu da belirtmek isterim ki, makrolar listesinde isimler görünmeyecek fakat isim doğru yazılabildiğinde ör:"ikivardiyeKaydet" elle yazıldığında makronuz çalışacaktır.

Eğer bu şekilde çalıştırılmasını da istemiyorsanız size iki yol önerebilirim:

1-Makroları isimlerini uzun ve özel karakterler ile yazın. Ör:ikivardiye_Kaydet__K
2-Makrolar penceresi menüsünü "Enabled" yapabilirsiniz.
 
Katılım
3 Nisan 2006
Mesajlar
118
Excel Vers. ve Dili
Vers. 2013 Almanca
Sayin anemos,

Bilgilerinizi paylastiginiz icin tesekkür ederim. Bilgileriniz isiginda islerim birazdaha kolaylasti.

Calismalarinizda basarilar dilerim.

Saygilarimla
kaleci
 
Üst