• DİKKAT

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

düzenlediğim makro exceli yavaşlatıyor (iç içe iki döngü?)

Katılım
21 Aralık 2006
Mesajlar
18
Excel Vers. ve Dili
excel 2000
makronun m sini bilmeden birşeyler yapmaya çalışıyorum. yani forum bu konuda çok faydalı oldu teşekkür ederim...

yine forumdaki aramalar sırasında yapmayı istediğim özelliklere uyacak şekilde çeşitli forum başlıklarından yararlanarak bir makro düzenledim. Sonuçta istediğimi yapıyor ama excel çok yavaşladı , ki sadece bu makro ile ayrıca daha bir çok veri girilecek , acaba bu yavaşlamaya bir çözüm var mıdır ?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For X = 3 To [H65536].End(3).Row
If Cells(X, 9) = "0" Or Cells(X, 9) = "" Then Cells(X, 9) = Cells(X, 8)
For Y = 3 To [G65536].End(3).Row
Cells(Y, 8) = Cells(1,1) * Cells(Y, 7)
Next Y
Next X
End Sub


Makronun ilk kısmı Cost Control'un bir cevabındandı sanırım (nicki yanlış hatırlıyorsam kusura bakmasın) , ayrıca birde sabit bir hücreden çarpım yapsın istedim ama dediğim gibi çok yavaşladı . Bu makroya hızlı çalışacak bir alternatif olabilir mi?

işte özetle , bir sutuna girilen değer sabit bir sayı ile çarpılacak sonuç yanındaki sutuna yazılacak ve çıkan bu sonuç diğer sutuna kopyalanacak-aktarılacak yani en baştaki sabit değer değiştiğinde sonuçlar değişmeyecek asıl amaç bu...
 
Selamlar,

Konuyla ilgili örnek bir dosya ekleyerek tam olarak ne yapmak istediğinizi açıklayabilirmisiniz.

Küçük bir açıklama; siz kodunuzu sayfanın "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" olayına yazmışsınız. Doğal olarak sayfada her hücre seçimi yaptığınızda kodlar tetiklenmektedir. Bunun yerine sabit hücre adresinizi belirterek kodunuzu sayfanın "Private Sub Worksheet_Change(ByVal Target As Range)" olayına yazarsanız kodunuz sadece bu sabit hücre değiştiğinde çalışacaktır. Bu şekilde kullanımda exceli biraz daha hızlandıracaktır.
 
evet ama "change" ile değişiklik yapınca ctrl+pause yapmadan kendine gelemiyor.

dosyayı ekliyorum.

yapmak istediğim yani yolladığım dosyada olan , G sütununa girilen bir sayı a1 ile çarpılıyor sonuç H sutununa yazılıyor ve ordan i sutununa aktarılıyor. Amacım değişen a1 değerine karşılık H sutununda sonucu , i sutununda da eski sonucu görebilmek...
 
Selamlar,

Örnek dosyanızda kullanmış olduğunuz kodu aşağıdaki ile değiştirip denermisiniz. G sütununa veri girdikçe hesaplamalar yeniden yapılacaktır.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [G3:G65536]) Is Nothing Then Exit Sub
    For X = 3 To [H65536].End(3).Row
    If Cells(X, "I") = "0" Or Cells(X, "I") = "" Then Cells(X, "I") = Cells(X, "H")
    Next X
    For Y = 3 To [G65536].End(3).Row
    Cells(Y, "H") = [A1] * Cells(Y, "G")
    Next Y
End Sub
 
sanırım koddaki anahtar satır "If Intersect(Target, [G3:G65536]) Is Nothing Then Exit Sub"
şu haliyle gayet hızlı çalışıyor elinize sağlık...

acaba çarpım sonucunun aktarımını , çarpımı yaptığı zaman olmasını sağlayabilir miyiz? yani iki döngüyü aynı anda çalıştırmak gibi bir şey söz konusu olabilir mi?
 
döngülerin yerini değiştirince istediğim şekilde oldu , yani şu şekilde :

For Y = 3 To [G65536].End(3).Row
Cells(Y, "H") = [A1] * Cells(Y, "G")
Next Y
For X = 3 To [H65536].End(3).Row
If Cells(X, "I") = "0" Or Cells(X, "I") = "" Then Cells(X, "I") = Cells(X, "H")
Next X

yardımlar için tekrar teşekkürler , kolay gelsin...
 
excelde yavaşlıyor

eklediğim dosyada plaka numaralarını içerir şeklinde süz yaparak aratmak istiyorum. fakat çok yavaş. yardımcı olursanız sevinirim.
 
Merhaba Arkadaşlar
Excelde sayfa 1 de A1 hücresine girdiğim bir sayıyı örneğin D1 e yazacak örneğin 1 rakamı ,daha sonra A1 i silip başka bir rakam yazacağım örneğin 3 D1 e bunu toplayarak yazacak 4 olacak böyle bir makro yazılabilirmi?
Teşekkür ederim
 
Geri
Üst