GoTo döngüsü

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,398
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Sana da iyi geceler yakup123cüğüm ... (samimiyet havası estirme anlamında ...)
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,398
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
hahahaha...... işte bu güzeldi

:mrgreen:
 
Katılım
18 Ekim 2010
Mesajlar
215
Excel Vers. ve Dili
Microsoft Excel 03,07
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...
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,531
Excel Vers. ve Dili
Ofis 365 Türkçe
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?
 
Katılım
18 Ekim 2010
Mesajlar
215
Excel Vers. ve Dili
Microsoft Excel 03,07
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

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
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.
 
Katılım
18 Ekim 2010
Mesajlar
215
Excel Vers. ve Dili
Microsoft Excel 03,07
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.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,531
Excel Vers. ve Dili
Ofis 365 Türkçe
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.
 
Katılım
18 Ekim 2010
Mesajlar
215
Excel Vers. ve Dili
Microsoft Excel 03,07
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 :/
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,531
Excel Vers. ve Dili
Ofis 365 Türkçe
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
 
Katılım
18 Ekim 2010
Mesajlar
215
Excel Vers. ve Dili
Microsoft Excel 03,07
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?
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,531
Excel Vers. ve Dili
Ofis 365 Türkçe
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.
 
Üst