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
 
Katılım
22 Haziran 2005
Mesajlar
998
Excel Vers. ve Dili
Office 2007 Türkçe
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
 
Katılım
21 Aralık 2006
Mesajlar
18
Excel Vers. ve Dili
excel 2000
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...
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
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
 
Katılım
21 Aralık 2006
Mesajlar
18
Excel Vers. ve Dili
excel 2000
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.
 
Katılım
21 Aralık 2006
Mesajlar
18
Excel Vers. ve Dili
excel 2000
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...
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
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
 
Üst