Makro ile döngü oluşturmak - Örnekli Anlatım

Katılım
13 Ekim 2017
Mesajlar
178
Excel Vers. ve Dili
2003-tr
Altın Üyelik Bitiş Tarihi
13/02/2019
Merhaba arkadaşlar;

Döngü konusunda hiç bilgisi olmayan arkadaşlara, bildiğim kadarıyla örnek ve açıklama ile izah etmeye çalışacağım.

NOT: Daha önce buna benzer açılmış bir konu varsa k.bakmayın. Ayrıca bilgilerim eksikse yorumda belirtirseniz düzelteyim.

Döngü meselesini bir örnek ile açıklamak istiyorum; Sayfa1'deki belirsiz B hücrelerinin bazılarında "ALIŞ", bazılarında ise "SATIŞ" yazmakta. İstediğimiz şey, "SATIŞ" yazan hücrelerin yanındaki A hücresine "X" işareti koydurmak (ya da X yazdırmak).

Öncelikle ilk ve son satır sayısını buluyoruz.
Kod:
Dim ilk As Integer, son As Integer
Dim v As integer, yer As Integer
Dim ara As String
NOT: Dim ile "ilk,son,v vb." gibi belirlediğimiz kısa isimlerle, bu isimlerin ne tür değer içeriğini belirledik. Örn: ilk için Integer, yani sayı dedik. ara için String, yani yazı dedik.

Kod:
ilk = Sayfa1.Range("B1").End(xlDown).Row
son = Sayfa1.Range("B" & Rows.Count).End(xlup).Row
NOT: B2 ilk satırımız, B30 son satırımız varsayarak buradaki kod ile "ilk =2" , "son=30" rakamı olur. Yani hücre değil, rakamsal değeri alır.

Şimdi döngüden önce aranacak kelimemizi belirliyoruz.

Kod:
ara = "SATIŞ"
NOT: yer diye tanımladığımız değişken, eğer döngü ya da arama ilk satırdan değilde istediğiniz satırdan başlasın diyorsanız, yer değişkenine satır numarasını yazmalısınız. Örn: 5. satırdan döngü başlasın istiyorum, yer=5 yazmalıyım. Ama ben burada "ilk" satırdan başlatacağımdan, yer'i sadece anlatımda size göstermek için ekledim.

Kod:
For v = ilk to son
Burada For döngü kodumuz. Kısaca "ilk ve son satırları arasında döngü gerçekleştir" dedik. V döngümüzün adı ya da kodu.

Kod:
IF Not Sayfa1.Range("B" & ilk).Value = ara Then GoTo atla
Burada eğer B'deki değer SATIŞ değil ise o satırı atla dedik.

Kod:
Sayfa1.Range("A" & ilk).Value = "X"
burada SATIŞ değerini bulunca A hücresine X yazmasını istedik.

Kod:
atla:
ilk = ilk + 1
   Next v
burada, döngüyü sonlandırdık.

yani sonuç olarak kodlarınız aşağıdaki gibi görünmeli.

Kod:
Dim ilk As Integer, son As Integer
Dim v As integer, yer As Integer
Dim ara As String

ilk = Sayfa1.Range("B1").End(xlDown).Row
son = Sayfa1.Range("B" & Rows.Count).End(xlup).Row

ara = "ALIŞ"

For v = ilk to son
IF Sayfa1.Range("B" & ilk).Value = ara Then GoTo atla
Sayfa1.Range("A" & ilk).Value = "X"
atla:
ilk = ilk + 1
   Next v
Umarım işinize yarar.
İyi forumlar.
 
Katılım
13 Nisan 2013
Mesajlar
237
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
18-05-2025
Teşekkürler emeğinize sağlık.

Döngülerle ilgili basitten zora doğru, dizi halinde örnekler

paylaşılmasının yeni başlayanlara çok faydası olacağını düşünüyorum.
 

likaba

Altın Üye
Katılım
3 Mayıs 2016
Mesajlar
158
Excel Vers. ve Dili
2016 Türkçe
Altın Üyelik Bitiş Tarihi
21-12-2027
Teşekkürler Sn. TanerSaydam
 
Üst