Kursor C Sütununda işlem yapılan hücrede entere basınca alt satırda B sütununa geçsin

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,682
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Merhaba Arkadaşlar,
Örnek dosyada 9.satırdan sonraki satırlarda B sütunundaki hücreye yazıp Enter tuşuna basıldığında, kursor A sütununa tarih atıp C sütununa geçiyor. C sütunundaki hücreye sayı yazıp Enter tuşuna basıldığında, kursor bir alt satırda B sütununa nasıl geçer?
Saygılarımla
Harici Link (Silinebilir) Ornek.xlsm
 

Ekli dosyalar

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,969
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Sayfadaki kodu silin aşağıdakini kopyalayın.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [B10:B210]) Is Nothing Then
        If Target = "" Then
            Target.Offset(0, 1) = ""
        Else
            Target.Offset(0, -1) = Date
        End If
    End If
End Sub
B de hücreye yazdıktan sonra TAB tuşuna basarak C hücresine geçin. sonra Entere bastığınızda bir alt satır B hücresine geçiş yaparsınız.

Not: Excel seçenekler / Gelişmiş sekmesinde "Enter'e bastıktan sonra seçimi taşı" kısmını "Sağa" seçmişsiniz onu "Aşağı" seçin..
 
Son düzenleme:

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,348
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
  • Makro Oluşturma:
    • VBA Editörü'nde sol taraftaki "Proje Gezgini" panelinde, çalışmak istediğiniz Excel dosyasını ve ardından "ThisWorkbook"ı seçin.
    • Sağ tıklayarak Insert > Module seçeneği ile yeni bir modül oluşturun.
  • Makro Kodunu Yazma: Aşağıdaki VBA kodunu yeni oluşturduğunuz modül içine yapıştırın:

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws As Worksheet
    Dim lastRow As Long

    ' Hangi sayfada çalıştığımızı belirleyelim
    Set ws = ThisWorkbook.Sheets("Sheet1") ' Sayfa adınızı buraya yazın, örneğin "Sheet1"

    ' Değişiklik yapılan hücrenin B sütununda ve 9. satırdan sonraki hücre olup olmadığını kontrol edelim
    If Not Intersect(Target, ws.Range("B9:B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row)) Is Nothing Then
    Application.EnableEvents = False ' Olayları geçici olarak devre dışı bırakalım

    ' Tarih atama işlemi (A sütununa)
    Target.Offset(0, -1).Value = Date ' Tarih atama (A sütunu)
    Target.Offset(0, 1).Select ' C sütununa geçiş

    Application.EnableEvents = True ' Olayları tekrar etkinleştirelim
    End If

    ' C sütununda yapılan değişikliği takip edelim
    If Not Intersect(Target, ws.Range("C9:C" & ws.Cells(ws.Rows.Count, "C").End(xlUp).Row)) Is Nothing Then
    Application.EnableEvents = False ' Olayları geçici olarak devre dışı bırakalım

    ' Sonraki satıra geçiş (B sütununa)
    lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row ' B sütunundaki son dolu satırı bulalım
    ws.Cells(lastRow + 1, "B").Select ' Bir sonraki satırın B sütununa geçiş yapalım

    Application.EnableEvents = True ' Olayları tekrar etkinleştirelim
    End If
    End Sub
  • Kodu Ayarlama:
    • Yukarıdaki kodu kendi ihtiyaçlarınıza göre uyarlayın:
      • Set ws = ThisWorkbook.Sheets("Sheet1") satırındaki "Sheet1" ifadesini kullanmak istediğiniz sayfa adıyla değiştirin.
      • İki If bloğunda da sütun numaralarını ve istediğiniz işlemleri ayarlayabilirsiniz.
  • Makro Aktivasyonu ve Kullanım:
    • Kodu ayarladıktan sonra VBA Editörü'nden çıkın ve Excel dosyanızı kaydedin.
    • Artık B sütununda (örneğin 9. satırdan itibaren) bir hücreye veri girildiğinde ve C sütununda bir hücreye sayı girildiğinde otomatik olarak işlemler gerçekleşecektir:
      • B sütununa veri girildiğinde, solundaki A sütununa otomatik olarak tarih atanacak ve sağındaki C sütununa geçiş yapılacak.
      • C sütununa sayı girildiğinde, bir sonraki satıra B sütununa geçiş yapılacak.
 
Katılım
20 Şubat 2007
Mesajlar
569
Excel Vers. ve Dili
2007 Office, Tr
Merhaba,
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.MoveAfterReturnDirection = xlToRight
If Intersect(Target, ([B10:B210,c10:c210])) Is Nothing Then Exit Sub
Application.EnableEvents = False
Select Case True
    Case Target.Column = 2
        If Target = "" Then
            Target.Offset(0, 1) = ""
        Else
            Target.Offset(0, -1) = Date
            Target.Offset(0, 1).Select
        End If
    Case Target.Column = 3
        If Intersect(Target, [C10:C210]) <> "" Then
            Target.Offset(1, -1).Select
        End If
    End Select
Application.EnableEvents = True
End Sub
 
Üst