• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

For Döngüsünü Başa Çevirme

Katılım
26 Şubat 2013
Mesajlar
11
Excel Vers. ve Dili
exel 2010 // Türkçe
Merhabalar;

Aşağıdaki kodla bir satırdaki belirli değerleri karşılayan hücreleri sırayla sarı işaretliyorum. Tüm hücreler işaretlendikten sonra kod yeniden başlayarak yeşil işaretlenmesi gerekiyor.
Fakat For döngüsü 50'ye ulaştıktan sonra başa dönmediği için yeşil olarak işaretleme yaptıramıyorum.
For döngüsü 50'ye ulaştıktan sonra tekrar çalışmalı ve bu sefer yeşil olarak işaretleme yapmalıdır. 50'ye ulaşınca tekrar ilk başta olduğu gibi sarı işaretleme yapacak. Yani sürekli olarak iki durumu sırayla tekrarlayacak.
Konu hakkında yardımlarınızı bekliyorum.
---------------------------------------------------------------------
Kod:
Private Sub CommandButton1_Click()
ActiveWorkbook.Save
For i = 1 To 50
If Cells(i, 3) = "Backoffice - Teknik" And Cells(i, 5) = "" Then
    If Cells(i, 3).Interior.Color = vbYellow Then
    Cells(i, 3).Interior.Color = vbGreen
    Cells(i, 5) = "1"
    GoTo 1
Else
If Cells(i, 3) = "Backoffice - Teknik" And Cells(i, 5) = "1" Then
    Cells(i, 3).Interior.Color = vbYellow
    Cells(i, 5) = ""
    GoTo 1
End If
    End If
End If
Next i
1:
MsgBox Cells(i, 2) + " // " + Cells(i, 4)
ActiveWorkbook.Save
End Sub
 
Son düzenleme:
Tam olarak ne yapmak istediğinizi anlayamadım ama kodunuzda bir mantık hatası var gibime geliyor. Amacınızın ne olduğunu bilmediğim için kodunuzun da ne işe yaradığını kavrayamadım maalesef.
Tahmini olarak şöyle bir döngü kurdum, inceleyiniz.
Ya da örnek dosya ekleyin.
Kod:
For i = 1 To 50
If Cells(i, 3) = "Backoffice - Teknik" And Cells(i, 5) = "" Then
    If Cells(i, 3).Interior.Color = vbYellow Then
        Cells(i, 3).Interior.Color = vbGreen
        Cells(i, 5) = "1"
    End If
ElseIf Cells(i, 3) = "Backoffice - Teknik" And Cells(i, 5) = "1" Then
    Cells(i, 3).Interior.Color = vbYellow
    Cells(i, 5) = ""
End If
Next i
 
Merhaba;
İlginiz için teşekkür ederim.
konuyu tekrar özetledim:
1. İşlem
Bu kodun bağlı olduğu butona bastığımda gerekli şartları taşıyan satırda 3. sütunda bulunan hücreyi yeşile boyayacak. mesela 4.satırda bu eşleşmeyi alırsa (4, 3) hücresi yeşil olacak ve (4, 5) hücresine 1 yazacak.
Butona tekrar tıkladığımda işlem 5. satırdan devam edecek. Bir sonraki eşleşmenin 7. satırda olduğunu varsayarsak (7, 3) hücresi yeşil olacak ve (7, 5) hücresine 1 yazacak.
Bu işlem 50. satıra kadar devam edecek.
2. İşlem
Tüm backoffice - Teknik yazan hücreler yeşil olduğunda butona bastığım zaman işlem tekrar 1. satırdan başlayacak. Bu sefer işlem tersine işleyerek 4. satırda ilk eşleşmeye geldiğinde (4, 3) hücresi sarı olacak ve (4, 5) hücresindeki 1 değerini silecek.
Bu işlem de 50. satıra kadar devam edecek.
For döngüsü 50. satıra geldiği zaman 1.işlem ve 2. işlem arasında sürekli geçiş olacak

Ben 1. işlemi aşağıdaki kodla yapıyorum Sorun 2. işlem için for kodunu tekrar çalıştırmakta yaşanıyor.

Kod:
Private Sub CommandButton1_Click()
ActiveWorkbook.Save
For i = 1 To 50
If Cells(i, 3) = "Backoffice - Teknik" And Cells(i, 5) = "" Then
    If Cells(i, 3).Interior.Color = vbYellow Then
        Cells(i, 3).Interior.Color = vbGreen
        Cells(i, 5) = "1"
        GoTo 1
        End If
End If
Next i

1:
MsgBox Cells(i, 2) + " // " + Cells(i, 4)

ActiveWorkbook.Save
End Sub

Umarım bu sefer anlatabilmişimdir isteğimi.
Destekleriniz için şimdiden teşekkürler.
 
Merhaba,
Aşağıdaki kodu dener misiniz?
Kod:
Dim a As Byte
Dim b As Boolean
Private Sub CommandButton1_Click()
If a = Empty Then
    a = 1
    b = True
ElseIf a > 50 And b = True Then
    a = 1
    b = False
ElseIf a > 50 And b = False Then
    a = 1
    b = True
End If
For i = a To 50
If b = True Then
    If Cells(i, 3) = "Backoffice - Teknik" And Cells(i, 5) = "" Then
        If Cells(i, 3).Interior.Color = vbYellow Then
            Cells(i, 3).Interior.Color = vbGreen
            Cells(i, 5) = "1"
            GoTo 1
        End If
    End If
ElseIf b = False Then
    If Cells(i, 3) = "Backoffice - Teknik" And Cells(i, 5) = "1" Then
        Cells(i, 3).Interior.Color = vbYellow
        Cells(i, 5) = ""
        GoTo 1
    End If
End If
Next i

1:
MsgBox Cells(i, 2) + " // " + Cells(i, 4)
a = i + 1
End Sub
 
Patron emeğine sağlık. Sorunsuz Çalışıyor. Teşekkür ederim.
 
Geri
Üst