• DİKKAT

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

birden fazla Private Sub Worksheet_SelectionChange kullanılması

Katılım
22 Mayıs 2009
Mesajlar
1,017
Excel Vers. ve Dili
Office 2003
Excel kod sayfasında aynı anda birden fazla olmak üzere,
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

kodunu nasıl kullanabilirim? Yardımcı olabilir misiniz?
 
merhaba

her 2 prosedürü tek bir prosedür olarak yazmalısınız.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
1. öncelikli kodlar
...
...
...
2. öncelikli kodlar
...
...
...
end sub
 
Üstadım;
Rica etsem örnek dosya ile örnekleye bilir misiniz?
 
Excel kod sayfasında aynı anda birden fazla olmak üzere,
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

kodunu nasıl kullanabilirim? Yardımcı olabilir misiniz?
Merhaba,
Yazılacak kod kodların çalışma amacına göre değişiklik gösterir. Bu nedenle çalıştırmak istediğiniz kodların hangi işlevi gerçekleştireceğini belirterek örnek bir dosya eklemeniz doğru cevaba ulaşmanızı sağlayacaktır.
 
1. İşlem >> Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [G7:G150]) Is Nothing Then Exit Sub

2. İşlem >> Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A7:A150]) Is Nothing Then Exit Sub

3. İşlem >> Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [AZ7:AZ150]) Is Nothing Then Exit Sub

Üstadım;
Yukarıda 3 işlemli "Private Sub Worksheet_Change(ByVal Target As Range)" var. Her biri için ayrı ayrı sütun adları var. Böyle bir durumda ne yapabilirim?

Teşekkür Ederim
 
Merhaba,
Kırmızı ile belirttiğim alan kodun püf noktası. Ayrıca exit sub tanımları da çıkarıldı. Bu kısımlara yoğunlaşın.
Sizin kodunuza göre g7:g150 aralığında işlem gerçekleştirdiğinizde kodlar çalışıyor, bu alanların dışında iilem yaptığınızda diğer kodlara geçilmeden exit sub ile işlem sonlandırılıyordu. Benim eklediğim kodda ise 1. eylem gerçekleşmezse 2.si konrol ediliyor, o da gerçekleşmezse 3. kod konrol ediliyor ve işlem tamamlanıyor.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If [COLOR="DarkRed"]Not [/COLOR]Intersect(Target, [G7:G150]) Is Nothing Then
'1. kodlarınız
ElseIf [COLOR="darkred"]Not[/COLOR] Intersect(Target, [A7:A150]) Is Nothing Then
'2. kodlarınız
ElseIf [COLOR="darkred"]Not[/COLOR] Intersect(Target, [AZ7:AZ150]) Is Nothing Then
'3. kodlarınız
End If
End Sub
 
Üstadım;
Dosyama uyarlayayım beceremezsem eğer "ki beceremeyeceğim kesindir" tekrar yardımınızı istirham ederim.

Yardımcı olduğunuz için de Teşekkür ederim.
 
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [F:F]) Is Nothing Then Exit Sub
On Error Resume Next
If IsNumeric(Target.Value) Then Target.Offset(0, 2).Value = (Target.Value) - ((Target.Value) - (Target.Value - (Target.Value * 0.18)))
If IsNumeric(Target.Value) Then Target.Offset(0, 1).Value = (Target.Value) - (Target.Value - (Target.Value * 0.18))
If IsNumeric(Target.Value) Then Target.Offset(0, 3).Value = (Target.Value - (Target.Value * 0.18)) * 0.00825
ElseIf Not Intersect(Target, [A4:A150]) Is Nothing Then
If IsNumeric(Target.Value) Then Target.Offset(0, 24).Value = (Target.Value) - ((Target.Value) - (Target.Value - (Target.Value * 0.18)))
ElseIf Not Intersect(Target, [b4:b150]) Is Nothing Then
If IsNumeric(Target.Value) Then Target.Offset(0, 24).Value = (Target.Value) - ((Target.Value) - (Target.Value - (Target.Value * 0.18)))

End If
End Sub

Üstad hata verdi.
 
Exit Sub'a dikkat edin. Exit Sub'u kullanmayacaksınız.
Kod:
If Not Intersect(Target, [F:F]) Is Nothing Then [COLOR="DarkRed"]Exit Sub[/COLOR]
 
Üstad bir sorunum daha var.

1 inci sorum => If IsNumeric(Target.Value > 10) Then Target.Offset(0, 1).Value = (Target.Value - 10)
If IsNumeric(Target.Value < 10) Then Target.Offset(0, 1).Value = 0 yazdırma konusunda

2 inci sorum => If Not IsNumeric(Target.Value = "A") Then Target.Offset(0, 1).Value = "1" yazdırma konusunda

Yardımcı olabilir misiniz?
 
Üstad bir sorunum daha var.

1 inci sorum => If IsNumeric(Target.Value > 10) Then Target.Offset(0, 1).Value = (Target.Value - 10)
If IsNumeric(Target.Value < 10) Then Target.Offset(0, 1).Value = 0 yazdırma konusunda

2 inci sorum => If Not IsNumeric(Target.Value = "A") Then Target.Offset(0, 1).Value = "1" yazdırma konusunda

Yardımcı olabilir misiniz?
Merhaba,
Mesajınızı yeni gördüm. Sorunuza cevap bulamadıysanız belirtin, yardımcı olmaya çalışayım.
 
Üstad sana zahmet yardımcı olabilirseniz memnun olurum.
Merhaba,
Sanırım istediğiniz aşağıdaki gibi bir kod. Eğer bu değilse ne yapmak istediğiniz hakkında da bilgi veriniz. Hangi hücreleri kapsayacağı hakkında bilgi vermediğiniz için a1:a10 arasını yazdım. Siz kendi adresinize göre uyarlarsınız.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [a1:a10]) Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target > 10 Then
Target.Offset(0, 1).Value = Target.Value - 10
ElseIf IsNumeric(Target.Value) And Target < 10 Then
Target.Offset(0, 1).Value = 0
ElseIf Not IsNumeric(Target.Value) And Target = "A" Then
Target.Offset(0, 1).Value = "1"
End If
End Sub
 
Ellerine Sağlık. TEŞEKKÜR ETTİM ÜSTAD
 
Son düzenleme:
Geri
Üst