H

Çözüldü Son dolu satıra kopyala yapıştır işlemi

  • Konuyu başlatan Konuyu başlatan habibe
  • Başlangıç tarihi Başlangıç tarihi

habibe

Normal Üye
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhaba.Anasayfada bulunan "no" kısmındaki proje numaralarına göre E2'deki değer değişmektedir. Yanındaki butona basınca ilgili "proje" sayfasına ilgili numaranın olduğu satırı kopyalayıp son dolu satırın altına yapıştırmasını istiyorum. Örneğin 1 yazıldı. A12den H12 ye kadar kopyalayıp, 20L015 sayfasına yapıştırsın. 2 yazıldı A13-H13 arasını kopyaladı ve 20L015 satırında bir önceki kaydedilen değerin altına yapıştırsın. Veriler kaydedilince silinmesin. Hücreleri seçtiriyorum ancak son dolu satır yerine başka yerlere yapıştırma yapıyor. Yardımlarınız için şimdiden teşekkürler.
 

Ekli dosyalar

Merhaba @habibe

-- Belgenizde BuÇalışmaKitabı (ThisWorkbook) bölümünde mevcut kopyala_yapıştır makro kodlarınız silin,
-- Aşağıdaki kodu, boş olan MODULE2'ye yapıştırın
-- Anasayfa'da yer alan ilgili düğmeyle bu kodu ilişkilendirin (nesneye sağ tık > makro ata > makro adı seç > işlemi onayla).

Bence, aktarma sonrasında; ya ilgili satırdaki veri silinmeli ya da bu satırın aktarıldığına dair, kendi satırında uygun bir hücreye
bu satırın aktarıldığını gösteren bir işaret/harf/not yazılmalı ve aynı satır tekrar aktarılmasın diye,
aktarma öncesinde bu işaret/harf/not kontrol edilmeli, boşsa aktarılmalı, doluysa "daha evvel aktarılmış" gibi bir uyarı olmalı.
Tabi bu husus aşağıdaki kodda yok, eklenmeli diye düşünüyorum.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(21 satır)

.
 
XDc = ana.Cells(ana.[E2] + 11, 3).Text syf = "": v = False: uz = Len(XDc) For Each sh In ThisWorkbook.Sheets If Left(sh.Name, uz) = XDc Then: v = True: syf = sh.Name: Exit For Next If v = True Then XDs = ThisWorkbook.Sheets(syf).Cells(Rows.Count, 4).End(3).Row + 1 ana.Cells(ana.[E2] + 11, 1).Resize(1, 8).Copy _ ThisWorkbook.Sheets(syf).Cells(XDs, 1)
Çok teşekkür ederim. Kod çalışıyor emeğinize sağlık ancak şu kısımları açıklarsanız sevinirim:
XDc = ana.Cells(ana.[E2] + 11, 3).Text
syf = "": v = False: uz = Len(XDc)
For Each sh In ThisWorkbook.Sheets
If Left(sh.Name, uz) = XDc Then: v = True: syf = sh.Name: Exit For
Next
If v = True Then
XDs = ThisWorkbook.Sheets(syf).Cells(Rows.Count, 4).End(3).Row + 1
ana.Cells(ana.[E2] + 11, 1).Resize(1, 8).Copy _
ThisWorkbook.Sheets(syf).Cells(XDs, 1)
 
@habibe

XDc = ana.Cells(ana.[E2] + 11, 3).Text >> Aktarma yapılacak sayfa adı: E2 + 11 numaralı satırda C sütunundaki metin.
syf = "": v = False: uz = Len(XDc) >> alt satırlarda değer ataması yapılacak değişkenler boşaltılıyor ve yukarıdaki metnin uzunluğu nedir.
For Each sh In ThisWorkbook.Sheets >> For .... Next döngüsüye, belgede XDc kriterine uyan sayfa var mı o kontrol ediliyor.
If Left(sh.Name, uz) = XDc Then: v = True: syf = sh.Name: Exit For
Next
If v = True Then
>> Belgede böyle bir sayfa varsa
XDs = ThisWorkbook.Sheets(syf).Cells(Rows.Count, 4).End(3).Row + 1 >> ilk boş satır numarası nedir.
ana.Cells(ana.[E2] + 11, 1).Resize(1, 8).Copy _
ThisWorkbook.Sheets(syf).Cells(XDs, 1)
>> ALTTİRE ile ayrılan iki satır aslında TEK kod satırıdır. Kopyala-Yapıştır işlemi yapılıyor.

.
 
Üst