• DİKKAT

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

for to döngüsü için bir soru

Katılım
21 Aralık 2006
Mesajlar
18
Excel Vers. ve Dili
excel 2000
For to döngüsü için dolu olan hücreleri saymama gibi bir ek yapabiliyor muyuz acaba?

örnek olarak "For y = 4 To [F4000]" için ilk 1000 hücresi doluysa saymaya 1000 den başlaması gibi bir değişken eklenebiliyor mu?

kod şöyle :

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, [F4:F65536]) Is Nothing Then Exit Sub
For y = 4 To [F4000].End(3).Row
Cells(y, "G") = Cells(y, "E") * Cells(y, "F")

Next y
End Sub
 
Ben burada cevabı sorunun içinde görüyorum yoksa yanlış mı anladım bilemiyorum.
Eğer anladığım doğruysa 4 yerine aşağıdakini yazın

Kod:
[A4000].End(3).Row
 
kodu 4'ün yerine yazınca çarpım satırı için "type mistasch" hatası verdi. Kod dan anladığım kadarı ile benim söylemeye çalıştığımı pek karşılaşmıyor . (bu arada programlama dillerini bilmiyorum)

anlatmaya çalıştığım for to döngüsünde "1 to 1000" dediğimiz de mesela her makronun çalışmasında 1 ile 1000 arası işlemleri tekrar yapıyor ve bu gecikmeye neden oluyor . Gecikmeyi önlemek için dolu olan satırlar için for to döngüsünden çıkış konulabilir mi acaba?

Ama sanırım dolu olup olmadığını tanımlamak ve kontrol etmek içinde her seferinde 1 den 1000 e kadar kontrol etmesi gerekecek . Yani mantıken olmaz gibi geliyor ama tabi vbasic in özel bir kodu falan olabilir bilemiyorum...
 
Formül yerine makro kullanmak istiyorsunuz sanırım.
Şu şekilde deneyin.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim ilk As Long, son As Long, y As Long

    If Intersect(Target, Columns("F")) Is Nothing Then Exit Sub
    
    ilk = [g65536].End(3).Row
    son = [a65536].End(3).Row
    
    For y = ilk To son
        Cells(y, "G") = Cells(y, "E") * Cells(y, "F")
    Next y

End Sub
 
bir sütuna girilen sayıyı diğer sütuna girilen sayı ile çarpacak formül varmı ? ben bulamadım tek tek formül kopyalamakda exceli şişiriyor.o yüzden makro en uygun çözüm sanırım.

verdiğiniz kod sadece e1*f1=g1 olarak çalışıyor. yani sonuç sadece g1 de çıkıyor. benim amacım e sütununa girilen veri ile f sütununa girilen veriyi çarpmak ve sonucu g sütununa yazdırmak.

ancak arattırmalar sonucunda aklıma başka bir alternatifde olabilir gibi geldi. şöyle ki; textbox yardımı ile veriler girip çarpım alınır ve bunu tabloya aktarır gibi birşey .Bunu hakkında araştırma yapıyorum.

sizce olur mu? yanlız textbox'a girilen veri sırasında mesala "," girilirse yanındaki textbox'a geçsin, gibi birşeyde yapmaya çalışıyorum.
 
sondan başa doğru gitmek gerekirse ,

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 44 Then TextBox2.SetFocus
End Sub

ile "," basınca yandaki textboxa geçiyor. textboxlar arası çarpma işlemi koyduğum zaman normal sayfa üzerinde işlem yaptırmaktan daha pratik olacak sanırım.

en azından döngü ya da sayma olmayacak...
 
benim amacım e sütununa girilen veri ile f sütununa girilen veriyi çarpmak ve sonucu g sütununa yazdırmak.
A-D sütunları sütunları boş ise bunu belirtmeniz gerekirdi. Şimdi döngü,"E" ile "G" sütunlarının son satır farkı kadar çalışacak.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim ilk As Long, son As Long, y As Long

    If Intersect(Target, Columns("F")) Is Nothing Then Exit Sub
    
    ilk = [g65536].End(3).Row
    son = [e65536].End(3).Row
    
    For y = ilk To son
        Cells(y, "G") = Cells(y, "E") * Cells(y, "F")
    Next y

End Sub
 
Geri
Üst