• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Makro'da Düzenleme ile Formülleri Korumak

Katılım
5 Kasım 2007
Mesajlar
4,727
Excel Vers. ve Dili
64 Bit TR - Microsoft Office 365 - Win11 Home
Merhaba,

Aşağıdaki kod ile B22:M37 aralığı hem taşınıyor hem de siliniyor,

İsteğim taşınma esnasında, bu aralıktaki veriler silinsin ancak formüller silinmesin,

Koda bir ilave rica ediyorum,

Ayrıca aşağıdaki kodu satır satır açıklamanız mümkün mü ? Bir düzenleme yapılacağı zaman, kodun işlevini bilirsem, kendim de yapabilirim.

Teşekkür ederim.

Kod:
Sub Aktar()
Set s2 = Sheets("RAPOR"): Set s3 = Sheets("ÇIKIŞ")
ilksatır = 23: sonsatır = s2.[c41].End(3).Row: tarih = s2.[J1]
For satır = ilksatır To sonsatır
s3satır = s3.[A65536].End(3).Row + 1
    s3.Cells(s3satır, 1) = tarih: s3.Cells(s3satır, 2) = s2.Cells(satır, 2)
    s3.Cells(s3satır, 3) = s2.Cells(satır, 3): s3.Cells(s3satır, 4) = s2.Cells(satır, 4)
    s3.Cells(s3satır, 5) = s2.Cells(satır, 6): s3.Cells(s3satır, 6) = s2.Cells(satır, 8)
Next
s2.Range("B22:M37").ClearContents
MsgBox "İşlem TAMAM.", vbInformation
End Sub
 
Son düzenleme:
Merhaba.
Umarım yanlış ifade etmem.
Kod:
[SIZE="2"][COLOR="Blue"]1) Set s2 = Sheets("RAPOR"): Set s3 = Sheets("ÇIKIŞ")[/COLOR]
[FONT="Arial Narrow"]İşlem yapılacak sayfaların adlarını kod'un alt satırlarında her defasında,
Sheets("RAPOR") yazmak yerine s2 olarak yazmanızı sağlar
(aynı şey diğer sayfa adı için de geçerli),[/FONT]
[COLOR="Blue"]2) ilksatır = 23[/COLOR]
[FONT="Arial Narrow"]aşağıdaki satırlarda oluşturulacat For ... Next döngüsünün başlama satır numarası,[/FONT]
[COLOR="blue"]3) sonsatır = s2.[c41].End(3).Row[/COLOR]
[FONT="Arial Narrow"]aşağıdaki satırlarda oluşturulacak For ... Next döngüsünün bitiş satırının numarası.
C41 hücresinden yukarı doğru, ilk dolu satır sonsatır'dır.[/FONT]
[COLOR="blue"]4) tarih = s2.[J1][/COLOR]
[FONT="Arial Narrow"]s2, yani RAPOR sayfası J1 hücresi tarih olarak adlandırıldı.[/FONT]
[COLOR="blue"]5) For satır = ilksatır To sonsatır[/COLOR]
[FONT="Arial Narrow"]yukarıdaki ilksatır'dan sonsatır'a kadar, satır-satır Next satırına kadarki işlemler yapılacak.[/FONT]
[COLOR="blue"]6) s3satır = s3.[A65536].End(3).Row + 1[/COLOR]
[FONT="Arial Narrow"]ÇIKIŞ sayfasına veri yazılacak satır numarasının tespit edilmesi,
anlamı son dolu satırdan bir sonraki satır,
yani ilk boş satır olup A65536 hücresinden yukarı doğru gidildiğinde
(yukarı işlemini sağlayan parantez içindeki 3 sayısı) ilk dolu satırdan bir sonraki satır.[/FONT]
[COLOR="blue"]7)    s3.Cells(s3satır, 1) = tarih: s3.Cells(s3satır, 2) = s2.Cells(satır, 2)[/COLOR]
[FONT="Arial Narrow"]Cells(satır no, sütun no) mantığıyla düşünmek gerek.
ÇIKIŞ sayfasında A sütunundaki ilk boş satırdan başlayarak;
RAPOR sayfasındaki 1'inci sütuna tarih, 2'nci sütuna RAPOR sayfasının 2'nci sütunundaki
bilgiyi yaz (yani B sütununa B sütunundaki bilgi),[/FONT]
[COLOR="blue"]8)    s3.Cells(s3satır, 3) = s2.Cells(satır, 3): s3.Cells(s3satır, 4) = s2.Cells(satır, 4)[/COLOR]
[FONT="Arial Narrow"]Üsttekinin aynısı, 3, 4 ve 5'inci sütuna 3, 4, 5'inci sütundaki bilgileri
(yani C, D ve E sütunu) yaz.[/FONT]
[COLOR="blue"]9)    s3.Cells(s3satır, 5) = s2.Cells(satır, 6): s3.Cells(s3satır, 6) = s2.Cells(satır, 8)[/COLOR]
[FONT="Arial Narrow"]5'inci sütuna (E sütunu) diğer sayfadaki 6'ncı sütundaki bilgiyi (F sütunundaki) yaz,....[/FONT]
[COLOR="blue"]10) Next[/COLOR]
[FONT="Arial Narrow"]bir satırdaki işlemler tamamlandı.
Şimdi satır değişkenini 1 artırmak ve
yeni satır değişkenine göre işlemleri yapmak üzere For satırına dön.

Bu işlem ilksatır değişkeninden sonsatır değişkenine kadar tek tek yapılıp bittiğinde
For satırına dönülmeyip aşağıdaki satıra geçilir.[/FONT]

[COLOR="Red"]11) s2.Range("B22:M37").ClearContents[/COLOR]
[FONT="Arial Narrow"]aktarma işlemi tamamlandığına göre s2 yani RAPOR sayfası B22:M37 arasındaki verileri temizler.[/FONT]
[COLOR="blue"]12) MsgBox "İşlem TAMAM.", vbInformation[/COLOR]
[FONT="Arial Narrow"]Mesaj kutusu ekrana getirilir.[/FONT][/SIZE]

Biraz uzun ve sanırım dil bakımından bozuk oldu ama gözden geçirip düzeltmeye üşendim.
Formüller kalsın derken istediğiniz nedir anlaşılmıyor.
Verdiğiniz kod'da formül diye bir şey yok.
 
Son düzenleme:
Sayın Ömer BARAN merhaba,

Öncelikle sabır ve nezaketle yaptığınız, öğretici ve yönlendirici açıklamalarınıza ve yardımlarınıza bir kere daha teşekkür ederim.

"RAPOR" sayfası A23:M41 aralığını formüllerle oluşturup, sonrasında bu aralığı "ÇIKTI" sayfasına aktarıyorum (sizin benim için yazdığınız kod ile)

Kod ; Aktarma ile "RAPOR" sayfası A23:M41 arasını siliniyor, tabi formülleri de,

Dolayısı ile formüller silinmesin istedim, ki bir sonraki aktarmaya bu aralık yine formüllerle dolsun,

Hatta olabiliyor ise, kod ; "RAPOR" sayfası A1:M53 aralığını yazıcıya göndersin, A23:M41 aralığını "ÇIKTI" sayfasına aktarsın ve formülleri de silmesin, böylece hem aktarmak hem de yazdırmak için 2 düğmeye gerek kalmasın.

Böyle bir kodla öğrenmek ve mantığı anlayarak kendim bir şeyler yapmak istiyorum,

Bu nedenle de sık sık, ancak farklı formatlarda çözümler istiyorum,

Umarım sizi sıkmıyor ve usandırmıyorumdur,

Her şey için tekrar teşekkür ederim,

Saygılarımla.
 
Geri
Üst