Target ve Range arasındaki fark

Katılım
30 Eylül 2009
Mesajlar
625
Excel Vers. ve Dili
excel 2016
herkese merhaba!!! değerli arkadaşlar kod yazar iken kullanılan Target ile Range ifadeleri arasındaki fark nedir acaba?bazı kodlarda Range ifadesi Target parantezinde bazı durumda da tam tersi durum söz konusu kısa bir izahatı olacak arkadaşlardan ricamdır.hangi durumda range,hangi durumda targetkullanmalıyız. kod yazma hususunda pratik bilgi olacaktır.saygılar!!!
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Sn Ayşavkı

Range: Sayfa üzerindeki bir hücreyi yada hücreler aralığını ifade eden komut yada işlevdir.
Target: Target diye bir işlev yada komut yoktur. Biliyorsunuz sayfa üzeri işlemlerde selectionchange,change gibi olaylar (event) kullanılır. Bu olayların bazılarında parametre tanımlaması gerekir. Bu parametrelerde target kelimesi, bir hücreyi yada hücre aralığını ifade eden değişken olarak tanımlanmıştır. Dolayısıyla target yerine istediğiniz kelimeyi yazarakta işlem yapabilirsiniz.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,729
Excel Vers. ve Dili
Excel 2019 Türkçe
Target= Sayfa olaylarında kullanılan bir değişkendir.
Range = Bir dizi yada hücreyi temsil eden nesnedir.
 
Katılım
30 Eylül 2009
Mesajlar
625
Excel Vers. ve Dili
excel 2016
merhaba!!! sayın Levent bey ve Sayın Hamitcan uzmanım!! değerli bir uzmanımın cevap olarak yazdığı çalışmamda bulunan aşağıdaki kodları inceler iken kod içerisinde geçen Target kelimesinin kod işlevini çözemedim.hem öğrenme hemde kodu anlama amacı ile bu konuyu açmak istedim.ilgi ve alakanız için şükranlarımı arz eder saygılar sunarım.
If Intersect(Target, Range("A2:A" & Cells(65536, "A").End(xlUp).Row)) Is Nothing Then Exit Sub
ifadesini Target haricinde okuyabilmekteyim.buradaki Target ne amaç ile kullanılmış saygı ve hürmetlerimi sunarım.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
.....
If Intersect(Target, Range("A2:A" & Cells(65536, "A").End(xlUp).Row)) Is Nothing Then Exit Sub
ifadesini Target haricinde okuyabilmekteyim.buradaki Target ne amaç ile kullanılmış saygı ve hürmetlerimi sunarım.
Burada ilgili kodun temel komutu Intersect fonksiyonudur. Bu fonksiyon ile işlem yapılmasını istediğiniz hücre aralığını sınırlandırabilirsiniz. Burada Target (Türkçesi hedeftir), o anda işlem yaptığınız hücreyi temsil etmektedir. Yukarıdaki koda göre işlem yapılan hedef hücre eğer A2:A... aralığı içinde değilse işleme devam edilmeyip durdurulmaktadır.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,521
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Sn. Ayşavkı,

Ek olarak;

"TARGET" ifadesi aşağıdaki kod bloğunda kırmızı renkle belirtilen değişken adıdır. Sayfada hücrelerde değişim olması durumunda kullanılmak üzere "TARGET" olarak tanımlanma kullanılmıştır. Kırmızı ifade yerine başka bir şey yazıp kullanabilirsiniz.

Kod:
Private Sub Worksheet_Change(ByVal [COLOR=red]Target[/COLOR] As Range)
'......
End Sub

Bunu aşağıdaki tanımlama gibi düşünebilirsiniz.

Kod:
Dim [COLOR=red]Hücre[/COLOR] As Range

Örnek uygulama;

Kod:
Private Sub Worksheet_Change(ByVal [COLOR=red]Benim_Hücrem[/COLOR] As Range)
    If [COLOR=red]Benim_Hücrem[/COLOR] = "EXCEL" Then MsgBox "Merhaba"
End Sub
Bu kodu sayfanızın kod bölümüne uygulayın. Daha sonra bir hücreye EXCEL yazıp deneyin.
 
Katılım
30 Eylül 2009
Mesajlar
625
Excel Vers. ve Dili
excel 2016
merhaba sayın Levent bey!!! jeton biraz köşeli geldi kusura bakmayın.konuya şöyle bir yaklaşımda bulunmak isterim.o da şudur; Range("A2:A" & Cells(65536, "A") ifadeside hücreyi (ya da aralığı) ifade etmiyormu?
şayet tespitim doğru ise Target ifadesine neden gereksinim duyulmuş?
birde şöyle sorayım bu kodda Target ifedesi kullanılmamış olsa idi ne gibi bir sonucu olabilir idi? ilgi ve sabrınız için şükranlarımı arz ederim.
 
Katılım
30 Eylül 2009
Mesajlar
625
Excel Vers. ve Dili
excel 2016
merhaba Sayın Korhan bey!!! mesajınızı görmedim çok özür dilerim hemen okuyup değerledireceğim ve geri dönüş yapacağım. saygılar!!!
 
Katılım
30 Eylül 2009
Mesajlar
625
Excel Vers. ve Dili
excel 2016
merhaba sayın Korhan bey ve sayın Levent bey!!! sayın Korhan Bey'in 6 no lu mesajı meseleyi epeyce aydınlattı.anladığım kadarı ile sayfa olaylarını seçtiğimizde vba Target İfadesini otomatik getiriyor.kendi isteğimize göre değiştirme imkanımız var.değerli arkadaşlar konunun tam anlamı ile kendi adıma pişmesi için 7 no lu mesajımda yapmış olduğum tespit ve değerlendirmeler ne kadar doğrudur?değerli bilgi ve görüşlerinizi esirgemeyeceğinizi bilerek saygılarımı arz ederim.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,409
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect([COLOR=blue]Target[/COLOR],[COLOR=blue] [A2:A10][/COLOR]) Is Nothing Then Exit Sub
    MsgBox Target.Address
End Sub
Yukarıdaki kod sayfadaki değişiklikte çalışacak koddur.
Fakat her hücrede değil sadece A2:A10 arasında iken kodlar devreye girecektir.

Diyelim ki o an değişiklik olan hücre A5 ise bu Target dır.
Target olan hücrenin Adresini, satırını ve sütununu yukarıdaki örnekte olduğu gibi öğrenebilirsiniz.

Örneğin Satır numarasını öğrenmek isterseniz Target.Row, Kolon numarasını ise Target.Column kullanırsınız.
 
Katılım
30 Eylül 2009
Mesajlar
625
Excel Vers. ve Dili
excel 2016
merhaba sayın Necdet bey!!! mes'elenin aydınlanması noktasında; değerli izahatınızı paylaştığınız içün saygılarımı arz ederim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,521
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

If Intersect(Target, Range("A2:A" & Cells(65536, "A").End(xlUp).Row)) Is Nothing Then Exit Sub
Bu komut genellikle sayfa olaylarında kullanılmaktadır. Sayfa olaylarında TARGET ifadesi otomatik olarak tanımlanmış değişken olarak önümüze sunulmuştur.

INTERSECT komutu ise KESİŞMEK-KESİŞİM anlamına gelmektedir. Ve bu komutun argümanları itibari ile en az iki alan belirtmek durumundasınız.

Kısaca aşağıdaki şekilde yorumlayabilirsiniz.

Intersect(Aktif_Hücre, Hedef_Aralık)


Yani ilk kırmızı renkli satırdaki ifadeyi yorumlarsak.

Aktif işlem yaptığım hücre adres olarak belirttiğim hedef aralık içinde değilse işlem yapmadan prosedürden çık.

7 nolu mesajınızda TARGET ifadesini kullanmazsam ne olur demişsiniz.

Bu durumda INTERSECT komutunun argümanlarından birisini eksik yazdığınız için aşağıdaki hata mesajını alırsınız.

Compile error:
Argument not optional


Umarım açıklamalar sizin için yeterlidir.
 
Katılım
30 Eylül 2009
Mesajlar
625
Excel Vers. ve Dili
excel 2016
Herkese merhaba!!!
sayın Korhan Bey!!! izahatlarınız içün şükranlarımı arz eder başarılar dilerim.mes'elenin aydınlanması noktasında izahatlarınız çok faidelı oldu,sayfalarca döküman incelemeye bedel açıklamalar ben ve benim gibi acemiler için çok faideli olmakta.tekrar teşekkürler!!!
 
Katılım
30 Haziran 2012
Mesajlar
116
Excel Vers. ve Dili
2010 excel ingilizce
Altın Üyelik Bitiş Tarihi
26/03/2019
Saygı değer hocalarım

Korhan, Necdet ve Levent Bey,

Her birinize vermiş olduğunuz bilgiler ve ilgileriniz için bir kez daha teşekkür ederim. :)
 
Katılım
10 Temmuz 2007
Mesajlar
36
Excel Vers. ve Dili
EXCEL 2013 TÜRKÇE WİNDOWS 7
Target hk.

Selamunaleyküm konu eski tarihli bir konu olsada konuyu açan ve cevap vermekten çekinmeyen siz değerli hocalara çok teşekkürlerimi sunuyorum konuyu anlaşılır şekilde izah etmişsiniz. Saygılarımla...:bravo::bravo:
 

ptcsite

Altın Üye
Katılım
8 Nisan 2016
Mesajlar
130
Excel Vers. ve Dili
M.OFFICE 2021 TR 64 Bit
Altın Üyelik Bitiş Tarihi
26-12-2027
Ben de buraya yeni öğrendiğim özelliği eklemek istiyorum. internette Türkçe olarak bulamadım.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2", "A3")) Is Nothing Then= Bu komutta A2 ve A3 hücrelerinin değişmesi durumunda yapılacakları sıralarız.

Eğer Bir değişken ifade birleştirilmiş hücrede ise Mesela birleşik hücreler "B2:E2" olsun o zaman bu hücrenin aktif olduğu durumu yazmak için;
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then olarak yazarız.

Eğer hem tekli hücre hem de birleşik hücrelerde değişkenlik olacaksa;


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2", "A3")) Is Nothing Or Target.Address = "$B$2" Then
olarak yazarız.
 
Üst