hücre tıklanınca satır seçilsin

Schuba

Altın Üye
Katılım
27 Ocak 2016
Mesajlar
170
Excel Vers. ve Dili
microsoft 365 family türkçe
değerli hocalarım şöyle bir koda ihtiyacım var

B27 : U100000 arasındaki herhangi bir hücreyi bir kere tıkladığımda veya seçtiğimde
tıklamış olduğum hücrenin bulunduğu satır ( B ) sütünun'dan ( U ) sütununa kadar seçilsin istiyorum

bunu istememin sebebi : mevcut kullandığım sayfada çok fazla veri ve sütun var
B27: U100000 arasındaki herhangi bir hücrede değişiklik yapmak istediğim zaman acaba doğru satırdamıyım diye haliyle sayfayı sağa sola çekmek zorunda kalıyorum
veya işlem yapmak istediğim hücre doğru satırdamı acaba diye dönüp bakmak zorunda kalıyorum

bu terredütü otradan kaldırmak için yukardaki işlemi yapacak bir koda ihtiyacım var
böylelikle işlem yapacağım B27 : U100000 arasındaki herhangi bir hücreye tıkladığım zaman tıkladığım hücrenin bulunduğu satır ( B ) sütünun'dan ( U ) sütununa kadar
yani tablomun başangıç ve bitiş sütun aralığındaki seçili hücrenin bulunduğu satır kendiliğinden seçileceği için bu sorun ortadan kalkar
gözle doğru satırdamıyım diye takip etmek zorunda kalmam...
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,086
Excel Vers. ve Dili
2007 Türkçe
Merhaba,
Aşağıdaki kodları ilgili sayfanın kod bölümüne uygulayınız.

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B27:U100000")) Is Nothing And Target.Cells.Count = 1 Then
    sat = Target.Row
    Range("B" & sat & ":U" & sat).Select
End If
End Sub
 
Katılım
6 Kasım 2004
Mesajlar
199
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Merhaba,
Aşağıdaki kodu kullanıp ÇİFT TIKLADIĞINIZDA satırı renklendiriyor.
Eğer sütunuda renklendirsin isterseniz " ' " tek tırnakları kaldırın.
Renkleri ise Colorindex'lerin yanındaki rakamları değiştirerek ayarlayabilirsiniz.

Kod:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [B27:U100000]) Is Nothing Then Exit Sub
    Range("B27:U100000").Interior.Color = xlNone
    Range("B" & Target.Row & ":U" & Target.Row).Interior.ColorIndex = 15
    'Range(Cells(4, Target.Column), Cells(20, Target.Column)).Interior.ColorIndex = 15
    Target.Interior.ColorIndex = 6
    Cells.Interior.Color = xlNone
    Rows(Target.Row).Interior.ColorIndex = 10
    'Columns(Target.Column).Interior.ColorIndex = 15
    Target.Interior.ColorIndex = 6
Cancel = True
End Sub
 

Schuba

Altın Üye
Katılım
27 Ocak 2016
Mesajlar
170
Excel Vers. ve Dili
microsoft 365 family türkçe
ömer hocam bu gönderdiğiniz kod çok güzel çalışıyor fakat şöyle bir sorun var
tıkladığım hücrenin satırı ıstediğim gibi seçiliyor fakat tıkladığım hücrenin içinde bir değişiklik yapamıyorum ..
beni direk tıkladığım satırın (B) sütunundaki hücreye atıyor. sadece (B) sütunundaki hücrelerde değişiklik yapabiliyorum

yani anlıyacğınız tıkladığım hücrenin içinde değişiklik yapabilmem gerekiyor
bir bakarsanız sevinirim..
 

Schuba

Altın Üye
Katılım
27 Ocak 2016
Mesajlar
170
Excel Vers. ve Dili
microsoft 365 family türkçe
tugkan hocam : sizin yaptığınızda güzel çalışıyor fakat sizin gönderdiğiniz kod'unda şöyle bir sorunu var

yukarda belirttiğim gibi ben B27:U100000 arasındaki tıkladığım hücre'nin satırı seçilsin istemiştim fakat sizin yazdığınız kodda
tıkladığım hücrenin satırı tüm satır boyunca seçiliyor ve ayrıca kodun çalışmasını istediğim B27:U100000 aralığın'ın haricindeki tüm sayfanın rengi beyaza dönüyor.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Seçim işinin belirttiğiniz şekilde olabileceğini sanmıyorum. bildiğim kadarıyla excel seçimi sol üst hücreden yapar.

Seçtiğiniz satırın renginin değişmesi yapılabilir ancak daha önceki tecrübelerimden gördüğüm kadarıyla bu işlem exceli çok yavaşlatıyor. Tavsiye etmem.

Aşağıdaki kodları ilgili sayfanın kod bölümüne eklerseniz seçili aralık sarı olacaktır:

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, [B27:U100000]) Is Nothing Then Exit Sub
[B27:U100000].Interior.Color = xlNone
a = Target.Row
Range("B" & a & ":U" & a).Interior.Color = vbYellow
End Sub
 

Schuba

Altın Üye
Katılım
27 Ocak 2016
Mesajlar
170
Excel Vers. ve Dili
microsoft 365 family türkçe
Seçtiğiniz satırın renginin değişmesi yapılabilir ancak daha önceki tecrübelerimden gördüğüm kadarıyla bu işlem exceli çok yavaşlatıyor. Tavsiye etmem.
Aşağıdaki kodları ilgili sayfanın kod bölümüne eklerseniz seçili aralık sarı olacaktır:
yusuf hocam : gönderdiğiniz kodlar tam istedğim gibi çalışıyor

yanlız yukarda satırın rengi değiştirilebilir ama tafsiye etmem exceli çok yavaşlatıyor demişsiniz
bu kodun yaptığıda zaten satırı renklendirmek değilmi
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
"Veri çokluğuna ve bilgisayar durumuna göre yavaşlatabilir" olarak düzelteyim o zaman :)
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,315
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Aşağıdaki gibi de kullanabilirsiniz.

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, Range("B27:U100000")) Is Nothing Then Exit Sub
    Range("B" & Target.Row & ":U" & Target.Row).Select
    Target.Activate
End Sub
 

Schuba

Altın Üye
Katılım
27 Ocak 2016
Mesajlar
170
Excel Vers. ve Dili
microsoft 365 family türkçe
Koray hocam : tam olarak istedğim buydu süper olmuş ellerinize sağlık...

yanlız hocam bu işlemde olmasını istemediğim 3 sorun farkettim oda şöyle
tıklamış olduğum hücrenin satırı tam istediğim gibi seçiliyor tıkladığım hücreye veride girebiliyorum buraya kadar herşey çok güzel

FAKAT
1 ) sadece tıkladığım hücrenin rengini değiştirmek istedğim zaman tüm seçili satırın rengi değişiyor

2 ) belirli bir alanı kopyalamak istediğim zaman haliyle tıklamış olduğum satır seçildiği için kopyalamak istediğim alanı seçip kopyalıyamıyorım
nereyi kopyalamak istersem istiyim tıklanan hücrenin bulunduğu satır kopyalanıyor.
buda aslında gayet normal çünkü bizim istediğimiz hücre tıklanınca satırın seçilmesiydi

3 ) (" C ") Sütunundaki ( C27 : C100000 ) arasındaki hücrelere çift tıkladığım zaman çalışan bir kodum var
ben ( C27 : C100000 ) arasındaki hücrelerin dışında bir hücreye çift tıkladığım zaman isteğimin dışında bu kodum çalışıyor
sadece ( C27 : C100000 ) arasındaki hücrelere tıkladığım zaman çalışmasını istediğim kodum aşağdadır

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("C27:C50000")) Is Nothing Then Exit Sub
Set S1 = Sheets("taksit takip")
Set S2 = Sheets("senet çıkar")
a = Target.Row
With S2
.[E3] = S1.Cells(a, "B")
End With
Sheets("senet çıkar").Select
S2.Range("E3").Select
End Sub

bu sorunlar çözebilirse tam olarak yapmak istedğimiz işlem gerçekleşmiş olacak ...
 
Son düzenleme:

Korhan Ayhan

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

Yaşadığınız sorunlar gayet doğal durumlardır. Çünkü seçim yaptıktan sonra işlem yaparsanız yaptığınız işlem bu alana uygulanır.

Bunu şu şekilde aşabiliriz.

İki farklı tuşa kısayol tanımlarız. (F11-F12 tuşları olabilir)

F11 tuşuna bastığınızda seçim pasif olur siz istediğiniz işlemi yaparsınız. Daha sonra F12 tuşuna basıp eski duruma devam edersiniz. Yani seçtiğiniz satır seçili duruma geçer.

Bu yönde çözüm işinize yararsa aşağıdaki kodu kullanabilirsiniz.

İlgili sayfalarınızın kod bölümüne;
Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Kontrol = True Then Exit Sub
    If Intersect(Target, Range("B27:U100000")) Is Nothing Then Exit Sub
    Range("B" & Target.Row & ":U" & Target.Row).Select
    Target.Activate
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Kontrol = True Then Exit Sub
    If Intersect(Target, Range("C27:C50000")) Is Nothing Then Exit Sub
    Set S1 = Sheets("taksit takip")
    Set S2 = Sheets("senet çıkar")
    a = Target.Row
    With S2
    .[E3] = S1.Cells(a, "B")
    End With
    S2.Select
    S2.Range("E3").Select
End Sub
ThisWorkbook (Buçalışmakitabı) bölümüne;
Kod:
Private Sub Workbook_Activate()
    Application.OnKey "{F11}", "Secim_Pasif"
    Application.OnKey "{F12}", "Secim_Aktif"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnKey "{F11}"
    Application.OnKey "{F12}"
End Sub

Private Sub Workbook_Deactivate()
    Application.OnKey "{F11}"
    Application.OnKey "{F12}"
End Sub

Private Sub Workbook_Open()
    Application.OnKey "{F11}", "Secim_Pasif"
    Application.OnKey "{F12}", "Secim_Aktif"
End Sub
Boş bir modüle;
Kod:
Public Kontrol As Boolean

Sub Secim_Pasif()
    Kontrol = True
End Sub

Sub Secim_Aktif()
    Kontrol = False
End Sub
 

Korhan Ayhan

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

C++:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("B7:U20")) Is Nothing Then
        Range("B" & Target.Row & ":U" & Target.Row).Select
        Target.Activate
        Selection.Copy
    Else
        Select Case Application.CutCopyMode
            Case xlCopy, xlCut
            Target.PasteSpecial
            Application.CutCopyMode = False
        End Select
    End If
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,315
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
İki makroyu birleştirmenize gerek yok gibi görünüyor. Birisi hücre değişince çalışıyor. Diğer ise hücreyi seçince çalışıyor.

Eğer birleşmesi gerekiyorsa örnek dosya ekleyip işlemi açıklayınız.
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,580
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Merhaba,
Sanırım Target.PasteSpecial yerine Target.PasteValues yazarsanız istediğiniz olur.
İyi çalışmalar
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,315
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Aşağıdaki gibi deneyiniz.

Eski hali; Target.PasteSpecial

Yeni hali; Target.PasteSpecial xlPasteValues
 
Üst