Excel'de makroları kullanarak çalışma sayfasındaki veri listesinde döngü oluşturma

Özet

Microsoft Visual Basic for Applications (VBA) makro yazdığınızda, çalışma sayfasındaki veri listesinde döngü oluşturmanız gerekebilir. Bu görevi gerçekleştirmek için çeşitli yöntemler vardır. Bu makalenin "Daha Fazla Bilgi" bölümü, aşağıdaki liste türlerini aramak için kullanabileceğiniz yöntemler hakkında bilgi içerir:

  • Bilinen, sabit sayıda satır içeren liste.
  • Dinamik liste veya bilinmeyen sayıda satır içeren bir liste.
  • Belirli bir kaydı içeren liste.

Daha Fazla Bilgi

Microsoft, yalnızca tanıtım amacıyla programlama örnekleri sağlar ve açık veya zımni herhangi bir garanti vermez. Buna zımni garantiler, satılabilirlik veya belirli bir amaca uygunluk da 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, listenin A1 hücresinde başlayan bir üst bilgi satırı ve A2 hücresinde başlayan veriler olduğu varsayılır.

Sabit, Bilinen Satır Sayısı olan Bir Listede Arama Yapmak için

Bu kod, A sütununu listenin sonuna taşır:

   Sub Test1()
      Dim x As Integer
      ' Set numrows = number of rows of data.
      NumRows = Range("A2", Range("A2").End(xldown)).Rows.Count
      ' Select cell a1.
      Range("A2").Select
      ' Establish "For" loop to loop "numrows" number of times.
      For x = 1 To NumRows
         ' Insert your code here.
         ' Selects cell down 1 row from active cell.
         ActiveCell.Offset(1, 0).Select
      Next
   End Sub

Dinamik Listede veya Bilinmeyen Sayıda Satıra Sahip Bir Listede Arama Yapmak için

Bu kod A sütununu listenin sonuna taşır. (Bu kod, A sütunundaki her hücrenin sonuna kadar bir giriş içerdiğini varsayar.)

   Sub Test2()
      ' Select cell A2, *first line of data*.
      Range("A2").Select
      ' Set Do loop to stop when an empty cell is reached.
      Do Until IsEmpty(ActiveCell)
         ' Insert your code here.
         ' Step down 1 row from present location.
         ActiveCell.Offset(1, 0).Select
      Loop
   End Sub

Not Verilerin tamamında A sütununda boş hücreler varsa, bu kodu bu koşulu hesaba eklemek için değiştirin. Boş hücrelerin birbirinden tutarlı bir uzaklık olduğundan emin olun. Örneğin, A sütunundaki diğer her hücre boşsa (örneğin, her 'kayıt' iki satır kullanırsa ve ikinci satır bir hücre girintiliyse bu durum oluşabilir), bu döngü aşağıdaki gibi değiştirilebilir:

     ' Set Do loop to stop when two consecutive empty cells are reached.
     Do Until IsEmpty(ActiveCell) and IsEmpty(ActiveCell.Offset(1, 0))
        ' Insert your code here.
        '
       ' Step down 2 rows from present location.
       ActiveCell.Offset(2, 0).Select
     Loop

Listede Belirli Bir Kaydı Aramak

Bu kod, A sütununu listenin sonuna taşır:

   Sub Test3()
      Dim x As String
      Dim found As Boolean
      ' Select first line of data.
      Range("A2").Select
      ' Set search variable value.
      x = "test"
      ' Set Boolean variable "found" to false.
      found = False
      ' Set Do loop to stop at empty cell.
      Do Until IsEmpty(ActiveCell)
         ' Check active cell for search value.
         If ActiveCell.Value = x Then
            found = TRUE
            Exit Do
         End If
         ' Step down 1 row from present location.
         ActiveCell.Offset(1, 0).Select
      Loop
   ' Check for found.
      If found = True Then
         Msgbox "Value found in cell " & ActiveCell.Address
      Else
         Msgbox "Value not found"
      End If
   End Sub