• DİKKAT

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

Hücreye veri girince macro çalıştırma !

Katılım
15 Ocak 2008
Mesajlar
530
Excel Vers. ve Dili
office 2013 Ingilizce
Kolay gelsin arkadaşlar ,
Şunu yapabilmek mümkünmü ? Mesela a1 e 123 yazdığımda benim belirleyeceğim makroyu otomatik çalıştırmak mümkünmü ?
a1 e 123 yazınca macro1 çalışssın mesela...
 
Kolay gelsin arkadaşlar ,
Şunu yapabilmek mümkünmü ? Mesela a1 e 123 yazdığımda benim belirleyeceğim makroyu otomatik çalıştırmak mümkünmü ?
a1 e 123 yazınca macro1 çalışssın mesela...
Bir standart modüle Makro1 oluşturunuz.Çalışma sayfasının Kod bölümünede aşağıdaki kodu yapıştırınız.
Dosya ektedir.:cool:
Sonra A1 hücresine Aşağıdaki kodu yapıştırınız.:cool:
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A1]) Is Nothing Then Exit Sub
If Target.Value = 123 Then Call Makro1
End Sub
 

Ekli dosyalar

Ellerinize sağlık hocam şahane olmuş Teşekkür ederim...
 
sn. hocam elinize sağlık

Bu sorunun devamı olarak yalnız A1 hücresi için değilde (A1:A100) aralığı için ayni işlem nasıl yapılabilir. Yardımcı olurmusunuz.
 
Hocam konuyu biraz daha açmak istiyorum
şimdi benim yapmak istediğim binevi macroyu gizlemek/şifrelemek. Ben macroyu 123 yazarak çalıştırdımi ve bu makronun sadece a1 e 123 yazılması ile çalışmasını istiyorum. Başka bir şekilde çalıştırılabilmesini istemiyorum bunu nasıl yaparım ??
 
Hocam konuyu biraz daha açmak istiyorum
şimdi benim yapmak istediğim binevi macroyu gizlemek/şifrelemek. Ben macroyu 123 yazarak çalıştırdımi ve bu makronun sadece a1 e 123 yazılması ile çalışmasını istiyorum. Başka bir şekilde çalıştırılabilmesini istemiyorum bunu nasıl yaparım ??[/QUOT

hocam mümkünatı varmıdır ?
 
Selamlar,

Sn. mebmab,

Evren beyin önerdiği kodu aşağıdaki şekilde düzenlerseniz belirttiğiniz aralıkta çalışır. Kırmızı renkli bölümü düzeltmelisiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A1[COLOR=red]:A100[/COLOR]]) Is Nothing Then Exit Sub
If Target.Value = 123 Then Call Makro1
End Sub
 
Selamlar,

Sn. rekkezum,

Eğer çalışacak makronuzun en başına A1 hücresindeki veriyi kontrol edecek bir sorgu eklerseniz koşul sağlanmadıkça makronuz çalışmayacaktır. Tabiki VBA kısmınıda şifrelerseniz kodunuzda sorguladığınız koşulun ne olduğunu şifreyi bilmeyenler göremeyeceklerdir. (Meraklılar hariç...)

Örnek olarak;

Kod:
Option Explicit
 
Sub TEST()
    If Sheets("Sayfa1").Range("A1").Value <> 123 Then
    MsgBox "Gerekli bölümlere veri girişi yapmadığınız için makronuz iptal edilmiştir.", vbInformation
    Exit Sub
    End If
 
    'Sizin kodlarınız...
End Sub
 
Option Explicit
Sub TEST()
If Sheets("Sayfa1").Range("A1").Value <> 123 Then
MsgBox "Gerekli bölümlere veri girişi yapmadığınız için makronuz iptal edilmiştir.", vbInformation
Exit Sub
End If

'Sizin kodlarınız...
End Sub

hocam sizin kodlarınız dediğiniz yere macromuzun adınımı,yoksa a1 e girilecek değerimi yazmamız gerekli...
 
Selamlar,

Sn. rekkezum,

If ile başlayan satırın sonundaki 123 değeri A1 hücresine girmeniz gereken değerdir. Makro çalışırken bu değer sorgulanıyor. Eğer A1 hücresindeki değer 123 ise makro çalışmaya devam edecek. Sizin kodlarınız dediğim bölüme kendi makronuzdaki kodları yazacaksınız. Yada makronuzun adınıda yazabilirsiniz.
 
Sn Korhan hocam macromu yazarken nasıl yazacağımı bilmiyoryum yani macro adını yazarken başına sonuna herhangi bir işaret koymam gereklimidir?
ufak bir örnek eklemeniz mümkünmü
 
Selamlar,

Siz çalışmasını istediğiniz makroyu ekleyin düzenleyelim.
 
Selamlar,

Sn. mebmab,

Evren beyin önerdiği kodu aşağıdaki şekilde düzenlerseniz belirttiğiniz aralıkta çalışır. Kırmızı renkli bölümü düzeltmelisiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A1[COLOR=red]:A100[/COLOR]]) Is Nothing Then Exit Sub
If Target.Value = 123 Then Call Makro1
End Sub

Sn.Hocam tşk ederim.
Oldukça basitmiş. Fakat bir söz vardır. "Bakmakla Görmek Arasında Büyük Fark Vardır" Ben sadece bakmışım.

Yalnız başka sorun oluştu. A1 Hücresi aynı zamanda =TOPLA(B2:G2) formülü var. Buna göre değer 123 olduğunda makro1 çalışması gerekiyor. Fakat içimde formül olduğu için makro çalışmıyor. Bunu nasıl yapabilirim.
 
Selamlar,

Sn. mebmab,

Aşağıdaki kodu kullanabilirsiniz. Sayfanın kod bölümüne uygulayınız.

Kod:
Option Explicit
 
Private Sub Worksheet_Calculate()
    If Range("A1") = 123 Then Makro1
End Sub
 
Korhan hocam çok faydalı oldu verdiğin bilgiler, saol.
Şunu nasıl ekleriz acaba a1 123 ise macro1 i,
a2 124 ise macro2 yi,
a3 125 ise macro3 ü.... çalıştır.a10 kadar devam edecek. Bu arada a1 den a10 a kadar Sn. mebmab hocamın dediği gibi içlerinde formul olacak, basit formüller (toplama).
 
Selamlar,

Sn. mebmab,

Aşağıdaki kodu kullanabilirsiniz. Sayfanın kod bölümüne uygulayınız.

Kod:
Option Explicit
 
Private Sub Worksheet_Calculate()
    If Range("A1") = 123 Then Makro1
End Sub

sn.Korhan Hocam

İşlem A1 hücresi için tıkır tıkır çalışıyor.Fakat

Private Sub Worksheet_Calculate()
If Range("A1:A100") = 123 Then Makro1

yaptığımda çalışmıyor. Keramet nerde?
 
Geri
Üst