Makale numarası: 299036 - Son Gözden Geçirme: 29 Nisan 2008 Salı - Gözden geçirme: 6.2

Excel'de makrolar kullanarak bir çalışma sayfasındaki veri listesinde döngü gerçekleştirme

Bu Sayfada

Hepsini aç | Hepsini kapa

™zet

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.

Daha fazla bilgi

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
				

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
Anahtar Kelimeler: 
kbhowto kbprogramming KB299036
 

Makale çevirileri

 

Related Support Centers