Makro Veri Kopyala Yapıştırda Sıra Sorunu

Katılım
27 Haziran 2018
Mesajlar
5
Excel Vers. ve Dili
2013, asp, net
Merhaba Arkadaşlar.
Hazırlamış olduğum bir makro kodum var. Ama aşamadığım da 1 sorunum var yardımcı olursanız minnettar kalırım :)
Aşağıda ki kodda dikkat ederseniz Seçili Hücreyi Sayfa2'te eğer dolu ise 1 satıra yapıştır komutu var. Fakat benim isteğim seçili hücreyi sayfa2 de a4 ve A50 aralığında satır dolu ise bir üste veya alta yapıştırması. listeyi yaptıktan sonra yukarıdan bir veri sildiğimde aşağıya devam ediyor yukarıdaki boşaltılan satırı görmüyor. Lütfen yardımmm :)

Sub HUCREYIEKLE()
Dim s1 As Worksheet, s2 As Worksheet
Set s1 = Sayfa2
Set s2 = Sayfa1
x = ActiveCell.Row
son = s1.[a65536].End(3).Row + 1
s1.Range("A" & son) = s2.Range("A" & x)
's1.Range("B" & son) = s2.Range("b" & x)
s1.Range("c" & son) = s2.Range("c" & x)
s1.Range("B" & son) = s2.Range("B" & x)
s1.Range("D" & son) = s2.Range("D" & x)
s1.Range("E" & son) = s2.Range("H" & x)
s1.Range("F" & son) = s2.Range("I" & x)
s1.Range("G" & son) = s2.Range("L" & x)
s1.Range("J" & son) = s2.Range("N" & x)
s1.Range("K" & son) = s2.Range("O" & x)
s1.Range("L" & son) = s2.Range("P" & x)
End Sub
 

relaxim

Altın Üye
Katılım
30 Ağustos 2009
Mesajlar
538
Excel Vers. ve Dili
Ofis 2016 Tr 64 bit
Altın Üyelik Bitiş Tarihi
15.06.2027
Merhaba,

Örnek eklerseniz daha kolay cevap alırsınız. (Dosya yolu ekleyiniz)
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
553
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Merhaba,
kodunuzda
Kod:
son = s1.[a65536].End(3).Row + 1
olduğu sürece aradaki boş satırı görmez.
Satır silme yaptığınıza göre sıralamanın bir önemi yok demektir. Bu durumda kodlarınızın sonuna bir sort komutu ekleyerek aradaki boş hücreleri alta alabilirsiniz.
kodlarınızın sonuna bu kodu ekleyiniz.
Kod:
s1.Sort.SortFields.Clear
    s1.Sort.SortFields.Add Key:=Range("a3:a50"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With s1.Sort
        .SetRange Range("A3:m50")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
 
Katılım
27 Haziran 2018
Mesajlar
5
Excel Vers. ve Dili
2013, asp, net
Merhaba,
kodunuzda
Kod:
son = s1.[a65536].End(3).Row + 1
olduğu sürece aradaki boş satırı görmez.
Satır silme yaptığınıza göre sıralamanın bir önemi yok demektir. Bu durumda kodlarınızın sonuna bir sort komutu ekleyerek aradaki boş hücreleri alta alabilirsiniz.
kodlarınızın sonuna bu kodu ekleyiniz.
Kod:
s1.Sort.SortFields.Clear
    s1.Sort.SortFields.Add Key:=Range("a3:a50"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With s1.Sort
        .SetRange Range("A3:m50")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
-------------
Çok Çok teşekkür ediyorum. Minettar kaldım gerçektende. ufak birkaç sorun var sadece onları kendim düzeltmeye çalışacağım. Ama tam istediğim gibi Ellerinize sağlık bilgi ve desteğiniz için tekrar tekrar teşekkürler
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
553
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Rica ederim. İyi çalışmalar.
 
Katılım
27 Haziran 2018
Mesajlar
5
Excel Vers. ve Dili
2013, asp, net
Merhaba,
kodunuzda
Kod:
son = s1.[a65536].End(3).Row + 1
olduğu sürece aradaki boş satırı görmez.
Satır silme yaptığınıza göre sıralamanın bir önemi yok demektir. Bu durumda kodlarınızın sonuna bir sort komutu ekleyerek aradaki boş hücreleri alta alabilirsiniz.
kodlarınızın sonuna bu kodu ekleyiniz.
Kod:
s1.Sort.SortFields.Clear
    s1.Sort.SortFields.Add Key:=Range("a3:a50"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With s1.Sort
        .SetRange Range("A3:m50")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

Son bir soru sormak istiyorum. gerçekten çok iyi herşey tamam sadece Order:=xlDescending veya Ascending değil de eklediğim gibi olmasını sağlayabilirmiyim. azalan artan sıralaması yerine yani. bu arada A3:M50 sınırını yine sürekli geçiyor tam denedim :)
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
553
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Son bir soru sormak istiyorum. gerçekten çok iyi herşey tamam sadece Order:=xlDescending veya Ascending değil de eklediğim gibi olmasını sağlayabilirmiyim. azalan artan sıralaması yerine yani. bu arada A3:M50 sınırını yine sürekli geçiyor tam denedim :)
Bir çeşit time stamp kullanarak yapabilirsiniz.
Ekleme yaptığınız andaki zamanı; Format(Date, "yyyymmdd") şeklinde başka bir kolona yazdırıp o kolonun tarih formatını da saat/dakika işleyecek şekilde ayarlarsanız o kolon üzerinden sort/descending şeklinde kullanarak sizin son ekleme yaptığınız satırın en alta gelmesini sağlayabilirsiniz.

bu arada A3:M50 sınırını yine sürekli geçiyor tam denedim
Bu cümleyi anlamadım.
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
553
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Kodunuzun önceden yazdırdığım kısmını silip şunu ekleyin:
Kod:
    s1.Range("N" & son) = Format(Now, "yyyymmddhhmmss")
    s1.Sort.SortFields.Clear
    s1.Sort.SortFields.Add Key:=Range("N3:N50"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
       With s1.Sort
           .SetRange Range("A3:N50")
           .Header = xlNo
           .MatchCase = False
           .Orientation = xlTopToBottom
           .SortMethod = xlPinYin
           .Apply
       End With
 
Üst