Microsoft Visual Basic for Applications (VBA) makrosu yazdığınızda, çalışma sayfasındaki veri listesinde döngü gerçekleştirmeniz gerekebilir. Bu görevi gerçekleştirmek için birkaç yöntem kullanabilirsiniz. Bu makalenin "Daha Fazla Bilgi" bölümü, aşağıdaki liste türlerinde arama yapmak için kullanabileceğiniz yöntemlerle ilgili bilgi içerir:
- Sabit sayıda satır içerdiği bilinen bir liste.
- Dinamik bir liste veya satır sayısı bilinmeyen bir liste.
- Belirli bir kaydı içeren bir liste.
Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; örtülü veya açık garanti vermez. Buna satılabilirlik veya belirli bir amaca uygunluk zımni garantileri de dahildir, ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek mühendisleri, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler. Aşağıdaki kod örneklerinde, listede A1 hücresinden başlayan bir başlık satırı ve olduğu ve verilerin A2 hücresinden başladığı varsayılmaktadır.
Sabit Sayıda Satır İçerdiği Bilinen Bir Listede Arama Yapma
Bu kod, A sütununda listenin sonuna kadar gider:
Sub Test1()
Dim x As Integer
' numrows = veri satırı sayısı olarak ayarla.
NumRows = Range("A2", Range("A2").End(xldown)).Rows.Count
' A1 hücresini seç.
Range("A2").Select
' "numrows" kez döngü oluştaracak şekilde "For" döngüsü oluştur.
For x = 1 To NumRows
' Kodunuzu buraya ekleyin.
' Etkin hücrenin 1 satır altındaki hücreyi seçer.
ActiveCell.Offset(1, 0).Select
Next
End Sub
Satır Sayısı Bilinmeyen Bir Dinamik Listede Arama Yapma
Bu kod, A sütununda listenin sonuna kadar gider: (Bu kod, A sütunundaki hücrelerin sonuna kadar her hücrede bir girdi olduğunu varsayar.)
Sub Test2()
' *verilerin ilk satırı* olan A2 hücresini seç.
Range("A2").Select
' Do döngüsünü boş hücreye ulaşıldığında duracak şekilde ayarla.
Do Until IsEmpty(ActiveCell)
' Kodunuzu buraya ekleyin.
' Geçerli konumdan 1 satır aşağı git.
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Not Veri boyunca A sütununda boş bir hücre varsa, kodu bu koşula uygun şekilde değiştirin. Boş hücrelerin arasındaki uzaklığın tutarlı olmasını sağlayın. Örneğin, A sütununda her iki hücreden biri boşsa (örneğin, her 'kayıt' iki satır kullanıyorsa ve ikinci satır bir hücre girintiliyse bu durum oluşabilir), bu döngü aşağıdaki gibi değiştirilebilir:
' Do döngüsünü art arda iki boş hücreye ulaşıldığında duracak şekilde ayarla.
Do Until IsEmpty(ActiveCell) and IsEmpty(ActiveCell.Offset(1, 0))
' Kodunuzu buraya ekleyin.
'
' Geçerli konumdan 2 satır aşağı git.
ActiveCell.Offset(2, 0).Select
Loop
Belirli Bir Kayıt İçin Listede Arama Yapma
Bu kod, A sütununda listenin sonuna kadar gider:
Sub Test3()
Dim x As String
Dim found As Boolean
' İlk veri satırını seç.
Range("A2").Select
' Arama değişkeni değerini ayarla.
x = "test"
' "found" adlı Boole değişkenini false olarak ayarla.
found = False
' Do döngüsünü boş hücrede duracak şekilde ayarla.
Do Until IsEmpty(ActiveCell)
' Etkin hücrede arama değerini denetle.
If ActiveCell.Value = x Then
found = TRUE
Exit Do
End If
' Geçerli konumdan 1 satır aşağı git.
ActiveCell.Offset(1, 0).Select
Loop
' found değişkenini denetle.
If found = True Then
Msgbox "Hücrede bulunan değer: " & ActiveCell.Address
Else
Msgbox "Değer bulunamadı"
End If
End Sub