• DİKKAT

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

GoTo döngüsü

Sana da iyi geceler yakup123cüğüm ... (samimiyet havası estirme anlamında ...)
 
hahahaha...... işte bu güzeldi

:mrgreen:
 
Merhaba;

Konu biraz eski ama bir sorum olucaktı :

For döngüsü içerisinde goto komutunu kullanamazmıyız? Aşağıdaki kodlarda nerede hata yaptığımı bulamadım :/

Kod:
for i = 2 to 100
     sheets("1").select
     on error goto ekle:
     sheets("1").range("b:b").find(sheets("2").cells(i,2)).select
     activecell.offset(0,4) = sheets("2").cells(i,2)
ekle:
     sheets("1").range("b1048576").end(3).offset(1,0) = sheets("2").cells(i,2)
next i

Kısacası, 2.sayfadaki bir dizi hücreyi 1.sayfada aratıp 4 sağındaki hücre ile değiştirmesini bulamazsa yani hata verirse bu hücreyi listenin sonuna eklemesini istiyorum.

Burada hatayı find ile bulup seçemediği hücre olarak düşünüyorum. Acaba yanlış bi algoritma mı kuruyorum?

Saygılarımla...
 
Merhaba,

Döngünün tamamında bir gariplik var. Örneğin her döngüde aynı sayfayı seçecek.

Bence basit bir dosya ekleyin bakalım çözümler nasıl olacak?
 
Merhaba;

Necdet Bey, örnek dosya ektedir.

Hata olsa da olmasa da goto evlemi gerçekleşiyor :/ ve hata meydana geldiğinde söylediğim eylemi yapıp hata veriyor.
 

Ekli dosyalar

Merhaba,

Dosyanızı incelemedim.

ekle:

kodundan önce

exit sub

yazarak deneyin. İstediğiniz bu sanırım. Eğer istediğiniz farklı bir şeyse kodları bir kenara bırakıp yapmak istediğiniz açıklarmısınız.
 
Merhaba,

Dosyanızı incelemedim.

ekle:

kodundan önce

exit sub

yazarak deneyin. İstediğiniz bu sanırım. Eğer istediğiniz farklı bir şeyse kodları bir kenara bırakıp yapmak istediğiniz açıklarmısınız.

Merhaba Ömer Bey,

Exit sub eklemek başarılı olmadı.

Yapmak istediğim kısaca şöyle ;

2 tablom var, bu tablolardan birincisindeki bir alandaki değerleri sırasıyla 2.tabloda arayacak. Bulursa, bulduğu satıra aradığı değeri yapıştıracak yani güncelleyecek. Bulamazsa aradığı satırı ekleyecek.
 
Merhaba,

Soruyu daha açık anlatsanız çözüme daha hızlı yaklaşabilirdiniz. 2 tablom var diyorsunuz, böyle diyeceğinize VERİ sayfası ve H sayfası var. Şu sayfadaki şu sütundaki (ki sizin açıkladığınız gibi 1, 2 .... 5 diye değil) değerleri sayfa bilmem nedeki şu sütunla karşılaştırıp olan olmayan vs vs vs vs valla sılıldım yazamayacağım.
 
Merhaba;

Ekli dosyaya göre yapmak istediğim ;

1 - H sayfasındaki B2 hücresini VERİ sayfasında B sütununda arayacak:
1.a - Bulursa, H sayfasındaki F2 ve G2 hücrelerini VERİ sayfasındaki F2 ve G2 hücrelerine yazacak.
1.b - Bulamazsa, H sayfasındaki B2 hücresini VERİ sayfasında B sütununda son dolu hücrenin altına ekleyip H sayfasında F ve G sütunlarında karşılık gelen hücreleri VERİ sayfasında F ve G sütunlarına yazacak.

Yukarıdaki anlatımı, H sayfası B sütununda kaç tane dolu hücre varsa o sayıda bir döngüye göre yapması gerekiyor.

Anlatımda sorun oluyor ama asıl öğrenmek istediğim hata olmadığı halde yani bulduğu halde neden goto deyimi çalışıyor :/ ve hata olduğunda neden "Object variable or with block not set" hatası alıyorum da belirttiğim satıra gidip o işlemleri yapmıyor :/
 
Merhaba,

Ben olsam kodu böyle yazardım. GoTo komutuna gerek yok.

Kod:
Sub OkuYazDegistir()
 
    Dim ShV As Worksheet, _
        ShH As Worksheet, _
        c   As Range, _
        i   As Long, _
        Sat As Long
 
    Application.ScreenUpdating = False
 
    Set ShV = Sheets("VERİ")
    Set ShH = Sheets("H")
 
    Sat = ShV.Cells(Rows.Count, "B").End(3).Row
 
    For i = 2 To Cells(Rows.Count, "B").End(3).Row
        Set c = ShV.Range("B:B").Find(ShH.Cells(i, "B"), LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            ShV.Cells(c.Row, "F") = ShH.Cells(i, "F")
            ShV.Cells(c.Row, "G") = ShH.Cells(i, "G")
        Else
            Sat = Sat + 1
            ShV.Cells(Sat, "B") = ShH.Cells(i, "B")
            ShV.Cells(Sat, "F") = ShH.Cells(i, "F")
            ShV.Cells(Sat, "G") = ShH.Cells(i, "G")
        End If
    Next i
 
    Application.ScreenUpdating = True
 
    MsgBox "İşlem Tamamlanmıştır...."
 
End Sub
 
Merhaba Necdet Bey,

Çözümünüz için teşekkür ederim. Son olarak değiştirilen ve yeni eklenen F ve G hücrelerindeki değerleri renklendirip kalın yazı olarak yazmak için ;
Kod:
a.cells(c,"F").font.bold = true
a.cells(c,"G").colorindex = 10

Uygun olmuyor, nasıl yapabilirim?
 
Merhaba,

a.cells(c,"G").Font.ColorIndex = 3

şeklinde kullanırsanız font rengini verirsiniz.
a.cells(c, "G").interior.colorindex = 3 derseniz arka plan rengini verirsiniz.
 
Geri
Üst