Kopyala Kodlarındaki Boşlukları Değer Olarak Getirme

  • Konuyu başlatan Konuyu başlatan ErolU
  • Başlangıç tarihi Başlangıç tarihi
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Katılım
28 Tem 2022
Mesajlar
300
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Arkadaşlar,
Bir kopyala makrosu oluşturdum. Formüllü alanı kopyalayıp başka bir yere değer olarak yapıştırıyor.
Yapıştırdığı yerde boşluklar boş görünüyor ama bağ değ dolu say ile bakınca dolu görünüyor.
Bu sorunu çözmek istiyorum.
Yardımlarınızı rica ederim.

İnternette araştırdım şöyle bir kod ile çözülebiliyormuş. Bunu ekteki dosyaya nasıl entegre edebilirim? Varsa farklı bir çözüm de olur.

Kod:
İndirmek için giriş yapmanız gerekmektedir.
(7 satır)
 

Ekli dosyalar

Çözüm
Bir de şöyle deneyin.

Copy yerine ilgili alandaki her hücre için;
-- hücre doluysa 93 satır üstündeki aynı sütun hücresine değeri yaz.
-- hücre boşsa (formül sonucu "" ise) 93 satır üstündeki hücre içeriğini temizle.

VBA:
İndirmek için giriş yapmanız gerekmektedir.
(15 satır)
Belgenizin ThisWorkbook bölümündeki SelectionChange kodunun amacını anayamadım.
Bana gereksiz gibi geldiği için silinebilir gibi geldi.

Mevcut kodu aşağıdaki gibi değiştirerek deneyin.

VBA:
İndirmek için giriş yapmanız gerekmektedir.
(18 satır)
 
Hatta kod kısaltması isterseniz; kırmızı kısımların yerine yeşil olanlar kullanılabilir.

VBA:
İndirmek için giriş yapmanız gerekmektedir.
(9 satır)
 
Teşekkür ederim kod için.
Gönderdiğiniz kod eklediğim dosyada çalıştı, işlemi yaptı. Fakat 12-13 saniye kadar sürüyor. Bu normal mi? Bu kadar uzun sürerse kullanamayacağım.
İkinci durum aynı yapıdaki diğer bir belgede For Each XD In XD için değişken atanmamış hatası veriyor.
 
O zaman belgenizde Option Explicit satırı vardır.
Kodun ilk satırı olarak Dim XD As Range diye bir satır ekleyin.

Süre garip, gerçek belgenizi görseydik, duruma bakabilirdik.

.
 
Ömer Bey,
Dosyamdaki düşeyara formülü işlemi uzatıyor. Dünkü dosyaya bu durumu öngörmediğim için bir formül yazıp geçmiştim.

Eklediğim belgede butona tıklayınca işlemin uzun sürdüğünü göreceksiniz. İşlem süresi asıl dosyamda daha uzun sürüyor.
Düşeyarayı kullanmak zorundayım.

KODDAKİ
Kod:
İndirmek için giriş yapmanız gerekmektedir.
(3 satır)
kısmı tam olarak nasıl işlem yapıyor bilmemekle beraber acaba hücreleri tek tek bulup silip mi diğer hücreye geçiyor diye düşünüyorum.
Eğer böyle ise işlemi kısaltmak için şöyle bir şey yapılabilir mi?

Makro yukarıdaki kod olmadan kopyalamayı yapsın sonra
Range("C7:AM66, AT7:AX66") bölgesindeki boş hücreler(bir şey yazmayan) topluca seçilsin ve ClearContents yapılsın.
 

Ekli dosyalar

Bir de şöyle deneyin.

Copy yerine ilgili alandaki her hücre için;
-- hücre doluysa 93 satır üstündeki aynı sütun hücresine değeri yaz.
-- hücre boşsa (formül sonucu "" ise) 93 satır üstündeki hücre içeriğini temizle.

VBA:
İndirmek için giriş yapmanız gerekmektedir.
(19 satır)
 
Çözüm
Sayın Baran,
Son kodu değil de son koddaki
Application.Calculation = xlCalculationManual
ve
Application.Calculation = xlCalculationAutomatic
satırlarını önceki koda uyguladığımda sorun çözülmüş oldu.

Yardımlarınız için teşekkür ederim. Sağ olun.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Benzer Konular Popüler İçerikler Daha Fazlası
Geri
Üst Alt