• DİKKAT

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

Bir hücrede almış bir değere göre makro çalıştırma

Katılım
8 Eylül 2008
Mesajlar
950
Excel Vers. ve Dili
2016 İngilizce
Merhabalar

ErrorIP adlı bir sheet üzerinde çalışıyorum. Bu sheetimde D sütununa bir buton makrosuyla rakam verileri getiriyorum.

D sütunundaki hücrelerde 1 - 2- 3 - 0 gibi değerler oluşuyor. Bu oluşan değere göre bir makrom daha olsun istiyorum.

zaten iki makrom var.

Örneğin

D1 hücresi eğer 0 veya 1 değerini almışsa "Switch1tanimatmax1komut" makrom çalışsın eğer D2 hücresi 2 veya 3 değerini almışsa "Switch1tanimatmax2komut"makrosu çalışsın
Bu if döngüsünü D sütunundaki bütün hücrelerde uygulamak istiyorum. yardımlarınıız rica ederim.

NOT : eğer ben ErrorIP sheetim in içine aşağıdaki kodu yazarsam bu sefer D hücresine gelen rakamlar için yazdığım makro hata veriyor.


Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, [D1]) Is Nothing Then Exit Sub
    If Target.Value = 0 Or Target.Value = 1 Then Call Switch1tanimatmax1komut
    If Target.Value = 2 Or Target.Value = 3 Then Call Switch1tanimatmax2komut
    End Sub
 
merhaba,
Bir cevap verdim ama eksik anlamışım.Cevabı sildim.
Bende seninle beraber çözmeye çalışıyorum.
 
Son düzenleme:
Kodu;
Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, [D1]) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Target.Value = 0 Or Target.Value = 1 Then Call Switch1tanimatmax1komut
If Target.Value = 2 Or Target.Value = 3 Then Call Switch1tanimatmax2komut
Application.EnableEvents = True
End Sub
şeklinde deneyiniz.
 
Merhaba,
Ben makro ve kodlar hususunda acemiyim.
Sorunuz için biraz forumdan araştırdım.
Biraz mantık yürüterek biraz da uzun yollu kod olmuşsa da işinizi görür herhalde.
Dosyada deneme yaptım.
İnşallah işiniz görür.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [d1:d4]) Is Nothing Then Exit Sub
If Target = 0 Then
Call Switch1tanimatmax1komut
End If
If Target = 1 Then
Call Switch1tanimatmax1komut
End If
If Target = 2 Then
Call Switch1tanimatmax2komut
End If

If Target = 3 Then
Call Switch1tanimatmax2komut
End If
End Sub
 

Ekli dosyalar

Pardon Muhammet Hocam,
Cevabınızı görmedim.
Selametle kalın
 
Bu dediğiniz kodları Alt+F11 Vba düzene geçip Bu kodun çalışması gereken sheet olan ErrorIP sheetine çift tıklayıp kodu oraya yapıştırıyorum.

Ama D1 hücresine elle rakamda girsem Kendi makromu çalıştırıp orada d sütununa gerekli sayıları sıralatsamda bu çağırma makrosu çalışmıyor.

nerede yanlış yapıyor olabilirim acaba
 
çalıştığım dosyanın benzer halini aşağıdaki linke yükledim.

http://s3.dosya.tc/server29/KPeRRO/SPG_.rar.html

aşağıdaki resimde göründüğü gibi "ErrorIP" Sheetinde A - B - C sütunlarına farklı makro butonlarıyla farklı sheetlerden veri alıyorum. .O buton ve sheetleri kaldırdım konumuzla alakası olmadığından...

D sütunan ise resimde göründüğü gibi "Cihazsayisi" sheetinde bulunan bazı rakam verileri var. Cihaz sayısı aktar butonundaki makro ile ordaki rakamlarıda buraya alıyorum.

Şimdi bu rakamlar buraya gelince dediğim makroların çalışması lazım

yani D sütunundaki hücrelere eğer 0 veya 1 değeri gelmişse "Switch1tanimatmax1komut" makrom çalışsın ve işlevini yerine getirsin. D sütunundaki hücrelerde 2 veya 3 değerlerini gördüğü hücreler içinse "Switch1tanimatmax2komut" makrosu çalışsın işlevini yerine getirsin.

Bilgi ve yardımlarınızı rica ederim.

cda.png
 
Son düzenleme:
Sub Komut()
son = Cells(Rows.Count, 4).End(3).Row
For i = 1 To son
If Cells(i, 4) < 2 Then
Switch1tanimatmax1komut
Else
Switch1tanimatmax2komut
End If
Next
End Sub
Bu kodu kullanın.
 
Tamam çok güzel bu halde çalışıyor.

çok ufak bi detay daha ekleyebilirmiyim eğer mahsuru yoksa.

Şöyleki

D1 hücresi eğer 2 den küçükse D2 hücresi eğer 2 den küçükse ibareleri koymak gerekecek.
çünkü D1 hücresi için çalışacak makro D2 için çalışacak makrolar farklı

şöyleki her hücre için farklı makro çalışması lazım.
Bu yukarıdaki kod D1 e uygun kod atıyor. daha doğrusu en son gördüğü değper neyse ona göre o makroyu çalıştırıyor

D1 için "Switch1tanimatmax1komut" "Switch1tanimatmax2komut"
D2 için "Switch2tanimatmax1komut" "Switch2tanimatmax2komut"
D3 için "Switch3tanimatmax1komut" "Switch3tanimatmax2komut"
D4 için "Switch4tanimatmax1komut" "Switch4tanimatmax2komut"
D5 için "Switch5tanimatmax1komut" "Switch5tanimatmax2komut"
 
Son düzenleme:
Tamam verdiğiniz kodlar üzerinde biraz düzenleme yaparak revize ettim. çok teşekkür ederim

revize hali şu şekildedir.

bilgi olması ve başkası faydalanması açısından

Kod:
Sub cihazsayisi_maxkomut_olustur()
If Range("D1") < 2 Then
Switch1tanimatmax1komut
Else
Switch1tanimatmax2komut
End If
If Range("D2") < 2 Then
Switch2tanimatmax1komut
Else
Switch2tanimatmax2komut
End If
If Range("D3") < 2 Then
Switch3tanimatmax1komut
Else
Switch3tanimatmax2komut
End If
If Range("D4") < 2 Then
Switch4tanimatmax1komut
Else
Switch4tanimatmax2komut
End If
If Range("D5") < 2 Then
Switch5tanimatmax1komut
Else
Switch5tanimatmax2komut
End If
End Sub
 
Çok Teşekkür ederim bilginize emeğinize sağlık Sayın Muhammet Okumuş
 
Geri
Üst