A sütununa veri girdiğimde bütün son veri kalsın diğerleri silinsin

teonet

Altın Üye
Katılım
20 Kasım 2005
Mesajlar
397
Excel Vers. ve Dili
Ofis 2010 Türkçe
Altın Üyelik Bitiş Tarihi
09-05-2029
Merhaba
A sütununda herhangi bir satıra veri girdiğimde, son girdiğim veri kalacak diğer tüm verileri silecek bir macro yazabilir misiniz?

teşekkürlerimi sunarım.
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
559
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Sub deneme()
Dim SonSatir As Long
Dim AktifHuc As Range

SonSatir = Cells(Rows.Count, "A").End(xlUp).Row

If SonSatir > 1 Then
If MsgBox("A sütunundaki tüm verileri silmek istediğinizden emin misiniz?", vbYesNo) = vbYes Then
Rows("1:" & SonSatir - 1).Delete
MsgBox "Veriler başarıyla silindi!", vbInformation
End If
End If
End Sub
 
Son düzenleme:

teonet

Altın Üye
Katılım
20 Kasım 2005
Mesajlar
397
Excel Vers. ve Dili
Ofis 2010 Türkçe
Altın Üyelik Bitiş Tarihi
09-05-2029
Sub SilveSakla()
Dim SonSatir As Long
Dim AktifHuc As Range

Set AktifHuc = ActiveCell
SonSatir = Cells(Rows.Count, AktifHuc.Column).End(xlUp).Row

If SonSatir > 1 Then
Rows("1:" & SonSatir - 1).Delete
End If
End Sub

Merhaba değerli cevabınız için teşekkürler. Kodu yapıştırdım ama kodlar aktif olmadı sanırım. nasıl aktif edebilirim.
 
Katılım
15 Aralık 2017
Mesajlar
103
Excel Vers. ve Dili
Microsoft Office Ev ve İş 2013 - 32 bit
Altın Üyelik Bitiş Tarihi
21/12/2022
Merhaba
A sütununda herhangi bir satıra veri girdiğimde, son girdiğim veri kalacak diğer tüm verileri silecek bir macro yazabilir misiniz?

teşekkürlerimi sunarım.
Kontrol edermisiniz

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Dim LastRow As Long

' A sütununda yapılan değişiklikleri izleyin
Set KeyCells = Intersect(Target, Me.Columns("A"))

' Eğer A sütununda bir değişiklik varsa
If Not KeyCells Is Nothing Then
' Son girilen veriyi sakla
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
LastValue = Cells(LastRow, "A").Value

' A sütunundaki diğer tüm verileri sil
Columns("A:A").ClearContents

' Son girilen veriyi tekrar yaz
Cells(1, "A").Value = LastValue
End If
End Sub
 

teonet

Altın Üye
Katılım
20 Kasım 2005
Mesajlar
397
Excel Vers. ve Dili
Ofis 2010 Türkçe
Altın Üyelik Bitiş Tarihi
09-05-2029
Kontrol edermisiniz

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Dim LastRow As Long

' A sütununda yapılan değişiklikleri izleyin
Set KeyCells = Intersect(Target, Me.Columns("A"))

' Eğer A sütununda bir değişiklik varsa
If Not KeyCells Is Nothing Then
' Son girilen veriyi sakla
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
LastValue = Cells(LastRow, "A").Value

' A sütunundaki diğer tüm verileri sil
Columns("A:A").ClearContents

' Son girilen veriyi tekrar yaz
Cells(1, "A").Value = LastValue
End If
End Sub

Merhaba Sayın Zehirle,
öncelikle cevap için teşekkür ederim, istediğim sonucu veriyor fakat çok uzun sürüyor. 1 ile 1000 satır arası sınırlasak daha hızlı olur mu acaba saygılar.
 
Katılım
15 Aralık 2017
Mesajlar
103
Excel Vers. ve Dili
Microsoft Office Ev ve İş 2013 - 32 bit
Altın Üyelik Bitiş Tarihi
21/12/2022
Merhaba Sayın Zehirle,
öncelikle cevap için teşekkür ederim, istediğim sonucu veriyor fakat çok uzun sürüyor. 1 ile 1000 satır arası sınırlasak daha hızlı olur mu acaba saygılar.
kontrol ediniz

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Dim LastRow As Long

' 1 ile 1000 arasındaki satırlardaki A sütununda yapılan değişiklikleri izleyin
Set KeyCells = Intersect(Target, Me.Range("A1:A1000"))

' Eğer 1 ile 1000 arasındaki satırlardaki A sütununda bir değişiklik varsa
If Not KeyCells Is Nothing Then
' Son girilen veriyi sakla
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
LastValue = Cells(LastRow, "A").Value

' A sütunundaki diğer tüm verileri sil
Columns("A:A").ClearContents

' Son girilen veriyi tekrar yaz
Cells(1, "A").Value = LastValue
End If
End Sub
 

teonet

Altın Üye
Katılım
20 Kasım 2005
Mesajlar
397
Excel Vers. ve Dili
Ofis 2010 Türkçe
Altın Üyelik Bitiş Tarihi
09-05-2029
kontrol ediniz

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Dim LastRow As Long

' 1 ile 1000 arasındaki satırlardaki A sütununda yapılan değişiklikleri izleyin
Set KeyCells = Intersect(Target, Me.Range("A1:A1000"))

' Eğer 1 ile 1000 arasındaki satırlardaki A sütununda bir değişiklik varsa
If Not KeyCells Is Nothing Then
' Son girilen veriyi sakla
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
LastValue = Cells(LastRow, "A").Value

' A sütunundaki diğer tüm verileri sil
Columns("A:A").ClearContents

' Son girilen veriyi tekrar yaz
Cells(1, "A").Value = LastValue
End If
End Sub
Bu sefer süre 20 saniyeye kadar kısaldı. işlem bittiğinde ecel dosyalarını kapatıyor.
 
Katılım
15 Aralık 2017
Mesajlar
103
Excel Vers. ve Dili
Microsoft Office Ev ve İş 2013 - 32 bit
Altın Üyelik Bitiş Tarihi
21/12/2022
Birde bunu denermisiniz. :)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Dim LastRow As Long
Dim SheetName As String
Dim CloseTime As Date

' 1 ile 1000 arasındaki satırlardaki A sütununda yapılan değişiklikleri izleyin
Set KeyCells = Intersect(Target, Me.Range("A1:A1000"))

' Eğer 1 ile 1000 arasındaki satırlardaki A sütununda bir değişiklik varsa
If Not KeyCells Is Nothing Then
' Sayfa adını E1 hücresinden al
SheetName = Range("E1").Value

' Son girilen veriyi sakla
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
LastValue = Cells(LastRow, "A").Value

' A sütunundaki diğer tüm verileri sil
Columns("A:A").ClearContents

' Son girilen veriyi tekrar yaz
Cells(1, "A").Value = LastValue

' Zamanlayıcıyı iptal et
On Error Resume Next
Application.OnTime EarliestTime:=CloseTime, Procedure:="CloseExcel", Schedule:=False
On Error GoTo 0

MsgBox "Sayfa adı: " & SheetName & vbCrLf & "Excel dosyası kapatılmayacak."
End If
End Sub
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
559
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Düzenleme yapıldı.Lütfen deneyiniz
 

teonet

Altın Üye
Katılım
20 Kasım 2005
Mesajlar
397
Excel Vers. ve Dili
Ofis 2010 Türkçe
Altın Üyelik Bitiş Tarihi
09-05-2029
Birde bunu denermisiniz. :)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Dim LastRow As Long
Dim SheetName As String
Dim CloseTime As Date

' 1 ile 1000 arasındaki satırlardaki A sütununda yapılan değişiklikleri izleyin
Set KeyCells = Intersect(Target, Me.Range("A1:A1000"))

' Eğer 1 ile 1000 arasındaki satırlardaki A sütununda bir değişiklik varsa
If Not KeyCells Is Nothing Then
' Sayfa adını E1 hücresinden al
SheetName = Range("E1").Value

' Son girilen veriyi sakla
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
LastValue = Cells(LastRow, "A").Value

' A sütunundaki diğer tüm verileri sil
Columns("A:A").ClearContents

' Son girilen veriyi tekrar yaz
Cells(1, "A").Value = LastValue

' Zamanlayıcıyı iptal et
On Error Resume Next
Application.OnTime EarliestTime:=CloseTime, Procedure:="CloseExcel", Schedule:=False
On Error GoTo 0

MsgBox "Sayfa adı: " & SheetName & vbCrLf & "Excel dosyası kapatılmayacak."
End If
End Sub
Merhaba, denedim. bu da çok uzun süre çalışıyor. desteğin için teşekkür ederim.
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,324
Excel Vers. ve Dili
2007 Türkçe
Merhaba,
Kodda yavaş çalışmayı gerektirecek bir durum yok gibi, sizin dosyanızdaki formüller ve hesaplamalar kaynaklı bir yavaşlama söz konusu olabilir.
Aşağıdaki yapıyı deneyiniz.
Rich (BB code):
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Intersect(ActiveSheet.UsedRange, Columns("A:A")).ClearContents

Cells(1, "A").Value = LastValue
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
 
Üst