• DİKKAT

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

Belirli bir makroyu aktif-pasif etmek

Katılım
14 Nisan 2013
Mesajlar
764
Excel Vers. ve Dili
Office Excel 2016 TR
Home & Business
Merhabalar,

Örneğin elimde hazır X makrosu var (kodlar metin belgesinde kayıtlı) ve ben bunu ne zaman kullanmak istesem, ilgili excel sayfasında kod bölümüne yapıştırıyorum, sonra makroyu o sayfada kullanıyorum. Daha sonra da işim bittiğinde kodları siliyorum.

Burada; makroyu istediğim zaman aktif edip istediğim zaman deaktif edebileceğim bir çözüm bulabilir miyim ?

Teşekkürler
 
Son düzenleme:
Bir buton makroyu aktif et,
Bir buton makroyu pasif et

Yardımcı olan birileri çıkar mı acaba
 
Makronuzu dosyanıza ekleyin.
Kodlarınızın içine çalıştığında şifre sorması için inputbox ekleyin.
Son olarak kod penceresine şifre koyup dosyanızı kaydedip kapatın.
Tekrar açıp makronuzu çalıştırıp sonucu gözlemleyin.
 
Merhaba Arkadaşlar,
Korhan Hocamın ifade ettiği şifreleyerek çalışmasını sağlıyor.
Bu da alternatif olsun (etkinleştirme ile ilgili)
Kod:
Sub Etkinlestir()
   CommandButton3.Enabled = True
End Sub
Kolay gelsin
 
Korhan hocamızın anlattıklarını başta yapamayacağımı sandım ama biraz google araştırması ile yaptım, yaptım ama tam anlamadım :)

Kod:
Sub UserInput()

Dim Sor As Integer

    Sor = MsgBox(Prompt:="Makroyu etkileştir?", _
            Buttons:=vbYesNoCancel, Title:="Makro Çalıştırmak")

    If Sor = vbYes Then

        Run "Sekmelerigizle"

    ElseIf Sor = vbNo Then
    
        Run "Sekmelerigöster"
        
    Else
                
        Exit Sub

    End If
    
End Sub


Sub Sekmelerigizle()
ActiveWindow.DisplayWorkbookTabs = False
End Sub

Sub Sekmelerigöster()
    ActiveWindow.DisplayWorkbookTabs = True
End Sub

Yukarıdaki kodlarla evet dersem Sekmeleri gizle, Hayır dersem Sekmelerigöster makrolarını aktif ediyorum. Oldu aslında
Fakat benim asıl kullanacağım makro Private Sub diye başlıyor, o makronun adını nasıl vereceğimi bulamadım.


Örnek kullandığım makro şu şuekilde
Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ad As String
.
.
.
.
.
End Sub
 
Son düzenleme:
Buton tanımlamanıza gerek yok.

Sayfada hücre seçimi yaparken çalışan kodunuzun içine de inputbox ekleyip şifre sordurun. Şifreyi bilen makroyu çalıştıracaktır.

VBA penceresinide şifrelediğinizde sizden başkası kodları kullanamayacaktır.
 
Buton tanımlamanıza gerek yok.

Sayfada hücre seçimi yaparken çalışan kodunuzun içine de inputbox ekleyip şifre sordurun. Şifreyi bilen makroyu çalıştıracaktır.

VBA penceresinide şifrelediğinizde sizden başkası kodları kullanamayacaktır.

Korhan hocam,

sizin sayenizde bir sağ tuş menüsü oluşturdum bilmiyorum hatırlarmısınız öncelikle onun için çok teşekkür ediyorum,

burada anlatmak istediğinizi yapamadım, inputbox olayını benim makromun içine yerleştirip, sağ tuşa ekleyeceğim istediğim bu

saygılar
 
Merhaba,

Bahsettiğim yöntem aşağıdaki gibidir.

Sayfa olaylarındaki kodlarınızın en başına şifre soran inputbox ekleyip işleme devam onayı alabilirsiniz.

Kod içindeki döngü yerine kendi kodlarınızı yazıp denersiniz.

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Onay = Application.InputBox("İşleme devam edebilmeniz için şifrenizi girmelisiniz!")
    If Onay = False Then
        MsgBox "İşleminiz iptal edilmiştir.", vbExclamation
        Exit Sub
    End If

    If Len(Onay) = 0 Then
        MsgBox "İşlem yetkiniz bulunmamaktadır.", vbExclamation
        Exit Sub
    End If

    If Onay = 2015 Then
        MsgBox "Şifre girişiniz onaylandı...", vbInformation
        
        For X = 1 To 10000
            DoEvents
            Cells(1, 1) = Int(Rnd() * 1000)
        Next
    End If
End Sub
 
Döngü yerine herhangi basit bir makro yazdığımda çalışıyor fakat,
Aşağıdaki gibi bir makro girdiğimde çalışmıyor + İkinci bir sorun makroyu sağ tuşa aktif edebilmem için "Sub makro ()" gibi bir başlangıca ihtiyacım var, Privatesub ile başlayan makroyu sağ tuşa ekleyemiyorum.

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Onay = Application.InputBox("İşleme devam edebilmeniz için şifrenizi girmelisiniz!")
    If Onay = False Then
        MsgBox "İşleminiz iptal edilmiştir.", vbExclamation
        Exit Sub
    End If

    If Len(Onay) = 0 Then
        MsgBox "İşlem yetkiniz bulunmamaktadır.", vbExclamation
        Exit Sub
    End If

    If Onay = 2015 Then
        MsgBox "Şifre girişiniz onaylandı...", vbInformation

[COLOR="Red"][B]        
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ad As String
.
.
.
.
.
.
.
.
.
.
End Sub
[/B][/COLOR]
        
    End If
End Sub
 
Bu durumda "Onay" ile ilgili olarak yazdığım kodları "Sub" ile başlayan makro kodlarınızın en başına yazmanız çözüm sağlayacaktır. Beceremiyorsanız kullandığınız kodu foruma ekleyin gerekli düzeltmeyi yapalım.
 
Yapamadım, örneğin aşağıdaki kodları kullanarak nasıl entegre edeceğim

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
Dim old_value As String
Dim new_value As String

For Each cell In Target

    If Not (Intersect(cell, Range("cell_of_interest")) Is Nothing) Then
        new_value = cell.Value
        old_value = ' what here?
        Call DoFoo (old_value, new_value)
    End If

Next cell

End Sub
 
Aşağıdaki gibi kullanabilirsiniz.

Kodunuz çalışmaya başlayınca onay isteyecektir. Şifreyi bilenler makroyu çalıştırabilecektir.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    Dim old_value As String
    Dim new_value As String
    
    Onay = Application.InputBox("İşleme devam edebilmeniz için şifrenizi girmelisiniz!")
    If Onay = False Then
        MsgBox "İşleminiz iptal edilmiştir.", vbExclamation
        Exit Sub
    End If

    If Len(Onay) = 0 Then
        MsgBox "İşlem yetkiniz bulunmamaktadır.", vbExclamation
        Exit Sub
    End If

    If Onay = 2015 Then
        For Each cell In Target
            If Not (Intersect(cell, Range("cell_of_interest")) Is Nothing) Then
                new_value = cell.Value
                old_value = ' what here?
                Call DoFoo(old_value, new_value)
            End If
        Next cell
    End If
End Sub
 
Olmuyor hocam, yine de teşekkürler çok uğraştırdım sizleri neden olmadı derseniz;

- makroyu aktif etmek istediğimde hata veriyor
- sağ tuşa ekleyemiyorum siz daha önceki mesajınızda Sub ile ekleyin gibi birşeyler demiştiniz onu çözemedim.

Teşekkürler
 
Bu durumda dosyanızı ekleyin ve yapmak istediğiniz işlemi açıklayın. Böylece konu boşu boşuna uzayıp gitmez. Net bir şekilde size cevap verebiliriz.
 
Geri
Üst