Çözüldü Sayfalar Arası En Hızlı Veri Taşımak

merakli

Site Üyesi
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhaba
Örnek dosyadaki gibi bir sayfa yapım var.
Liste!F8hücresinden bir sınıf seviyesi seçildiğinde Veri sayfasından bu sınıf seviyesindeki öğrenci listesini çekmek istiyorum
Çekiyorum ancak sayfa kasılıyor ve bekleyerek işlem yapılıyor
@Ömer BARAN Beyin burada bahsettiği şekilde hızlı işlem yapan bir şekilde bunu nasıl yapabiliriz.

soru.webp
 

Ekli dosyalar

Moderatörün son düzenlenenleri:
@merakli

Aşağıda 4 farklı yöntem var.
Verdiğim YÖNTEM kodlarını boş bir MODULE yapıştırın.

Sayfanın kod bölümüne de aşağıdaki Worksheet_Change kodunu yapıştırın.
RUN ibaresinin sol başındaki TEK TIRNAĞI kaldırıp, karşısına da performans bakımından vereceğiniz karara göre ilgili kodun adını yazarsınız. F8'de seçim yapıldığında işlem gerçekleşir.

VBA:
You must log in to view content
(5 satır)

Yöntemler:
-- 1'inci yöntem
; klasik döngü ile hücreden oku - karar ver - sonuç hücresine yaz.
-- 2'nci yöntem, verileri diziye al, dizi içerisindeki döngüyle oku - karar ver - sonuç dizisine yaz, tek adımda tüm sonuçları alana yaz.
-- 3'üncü yöntem, kritere göre filtrele (İLE BAŞLAR) , filtre sonucunda kalan hücreleri sonuç alanına kopyala.
-- 4'üncü yöntem (veriler kritere göre sıralı olduğu için), kritere uygun ilk veri satırını ve adeti bul, sonuç alanına tek adımda kopyala.

[REPLY]
VBA:
You must log in to view content
(141 satır)
[/REPLY]
 
@merakli

Aşağıda 4 farklı yöntem var.
Verdiğim YÖNTEM kodlarını boş bir MODULE yapıştırın.

Sayfanın kod bölümüne de aşağıdaki Worksheet_Change kodunu yapıştırın.
RUN ibaresinin sol başındaki TEK TIRNAĞI kaldırıp, karşısına da performans bakımından vereceğiniz karara göre ilgili kodun adını yazarsınız. F8'de seçim yapıldığında işlem gerçekleşir.
@Ömer BARAN Bey dört farklı yöntem için ayrı ayrı teşekkür ediyorum.
Bunlar benim için çok güzel örnekler oldu tümünü gerçek dosyam üzerinde uygulayıp farkı deneyimleyeceğim inşallah
 
@merakli

Önceki kod cevabımda küçük düzetme yaparak güncelledim.
Sayfayı yenileyerek önceki cevabımı tekrar kontrol edin. İlave açıklama da yazdım.

Not: Alıntı yaparken tüm cevabı değil, alıntı içerisine sadece gerekli kısmı alırsanız daha iyi olur.

.
 

Ekli dosyalar

  • Screenshot_1.webp
    Screenshot_1.webp
    12.9 KB · Görüntüleme: 19
Moderatörün son düzenlenenleri:
@merakli
Belgeniz önümde ve Run veya Application.Run şeklinde sorunsuz işlem görüyor.

Neden Call değil de Run komutunu tercih ettim:
-- bendeki makro isimleri (module2'de) verial1, verial2, verial3, verial4 şeklinde.
-- Hedef sayfa F7 hücresinde de kullanılacak veri alma yöntemini belirtmek üzere 1, 2, 3, 4 sayılarını açılır liste ile seçiyorum.
-- Hem F8 hem de F7'deki seçime göre ilgili makronun tetiklenmesini sağlamak üzere If Intersect(Target, [F7:F8] .... olarak uyguladım.
-- F7'deki değişime bağlı olarak makro adını "verial" & [F7] yani verial kelimesi ve F7'deki makro sayısını birleştirerek oluşturmuş oldum.
-- Makro adı böyle tespit edildiğinde Call ... işlev görmediği için Application.Run "verial" & [F7] veya Run "verial" & [F7] şeklinde sonuç aldım.

Siz, performansa göre kararınızı verdiğinize göre Call makroadı şeklinde kullanabilirsiniz.

.
 
ilginç belki ben orjinal dosyaya uyarlarken bir hata yapmışımdır düşüncesiyle üstteki örnek dosyayı indirip sizin kodları hiç değiştirmeden ekledim ama yine hata verdi.
Excel ayarlarından olabilir mi?
 

Ekli dosyalar

Run "verial3" gibi ÇİFT TIRNAK arasına yazmak (METİN gibi göstermek) gerekiyormuş.
Ben tabi zaten makro adını F7'deki sayıyla birleştirerek elde ettiğim için METİN gibi göstermiş olmuştum.
Önceki cevabımı da buna göre güncelleyeyim bari.
 
Konuyu başlatan
Site Üyesi
Katılım
Konu Bilgi
Durum
Çözüldü 
Forum
Excel Makro Soruları
Başlangıç tarihi
Son yanıt tarihi
Cevaplar
8
Üst