SelectionChange olayı

Katılım
5 Eylül 2007
Mesajlar
1,247
Excel Vers. ve Dili
ofis 2010
Altın Üyelik Bitiş Tarihi
21-07-2024
Zaman zaman makroda iki adet SelectionChange olayı kullanmam gerekiyor. İkisini birleştirmek veya farklı alternatif olabilir mi? Bunu yapamadığım için çalışmanın yapısını değiştiriyorum. Oysa bu şekilde daha pratik olacak.



CODE]Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, [B5:B20,D5:D20,J2:J2000]) Is Nothing Then Exit Sub
If Target.Column = 2 Then
'cmd1.Top = ActiveCell.Top
ElseIf Target.Column = 4 Then
'cmd2.Top = ActiveCell.Top
Else
CMD3.Top = ActiveCell.Top
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Target.Address(0, 0) = "H3" And [A2] = "TARİH" Then [K3].Activate
'hücre atlaması için A2 hücresi "TARİH" seçeneğine göre işlem yapıyor
If Intersect(Target, Range("L3:L3")) Is Nothing Then Exit Sub
Call fatura_tek
End Sub[/CODE]
 

muygun

Özel Üye
Katılım
6 Temmuz 2004
Mesajlar
9,180
Excel Vers. ve Dili
Excel-2003 Türkçe
Merhaba;
makro adından sonra;
sat=target.row
süt=target.column
satırlarını ekleyin.
sonra mukayesenizi ekleyin
if cells(sat)=3 and süt=8 then
işlemler...
end if

if süt=2 and cells(sat,süt)<>"" then
işlemler...
end if

end sub

gibi...
Mukayese şartını belirleyerek birden çok
if
end if
aralığı belirleyebilirsiniz.
İyi çalışmalar.
 
Katılım
5 Eylül 2007
Mesajlar
1,247
Excel Vers. ve Dili
ofis 2010
Altın Üyelik Bitiş Tarihi
21-07-2024
Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
sat = Target.Row
süt = Target.Column

    If Intersect(Target, [B5:B20,D5:D20,J2:J2000]) Is Nothing Then Exit Sub
    If Target.Column = 2 Then
        'cmd1.Top = ActiveCell.Top
    ElseIf Target.Column = 4 Then
        'cmd2.Top = ActiveCell.Top
    Else
        CMD3.Top = ActiveCell.Top
    End If
    If süt = 2 And Cells(sat, süt) <> "" Then
    If Target.Address(0, 0) = "I3" And [J3] = "ÇIKIŞ" Then [K3].Activate
'hücre atlaması için A2 hücresi "TARİH" seçeneğine göre işlem yapıyor



If Intersect(Target, Range("L3:L")) Is Nothing Then Exit Sub
VeriKopyala_tekli
End If
    
       End Sub
yazdığınız bilgiden bu şekilde anladım. İlk makro sorunsuz çalıştı ancak ikinci makro çalışmadı.
 

muygun

Özel Üye
Katılım
6 Temmuz 2004
Mesajlar
9,180
Excel Vers. ve Dili
Excel-2003 Türkçe
If Intersect(Target, [B5:B20,D5:D20,J2:J2000]) Is Nothing Then Exit Sub

satırını;
If Target.Column = 2 Then
satırının altına yerleştir

Yada küçük bir örnek ekleyin.
 
Katılım
5 Eylül 2007
Mesajlar
1,247
Excel Vers. ve Dili
ofis 2010
Altın Üyelik Bitiş Tarihi
21-07-2024
Merhaba;
Üçüncü satırda işlem yapıldığında L3 hücresine gelindiğinde A makrosu tetiklenecek
Altıncı satır ve aşağısında L6:L1000 sütununu gelindiğinde B makrosu tetiklenecek.
Böyle bir çalışma yapıyorum.
 

Ekli dosyalar

muygun

Özel Üye
Katılım
6 Temmuz 2004
Mesajlar
9,180
Excel Vers. ve Dili
Excel-2003 Türkçe
Merhaba;
Eki deneyin. (Msgbox yerine tetiklenecek makronuzu yazın).
İyi çalışmalar.

Not: mukayeseye Hücre doluğu vs.. gibi şartlarda ekleyebilirsiniz.
 

Ekli dosyalar

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bu tip durumlarda intersect komutunu kullanacaksınız. Bu konut ile çalışmasını istediğiniz hücre aralıklarına göre kodlarınızı tanımlayabilirsiniz.

Örneğin;

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'1. KOŞUL
If Not Intersect(Target, ..ARALIK..) Is Nothing Then

....kodlarınız

end if

'2. KOŞUL
If Not Intersect(Target, ..ARALIK..) Is Nothing Then

....kodlarınız

end if

End Sub
 
Katılım
5 Eylül 2007
Mesajlar
1,247
Excel Vers. ve Dili
ofis 2010
Altın Üyelik Bitiş Tarihi
21-07-2024
Teşekkür ederim. Gayet pratik şekilde problem çözüldü. Kullanışlı bir makro ve ilaveye de uygun. İyi çalışmalar.
 
Üst