koddaki döngü hatası nerede acaba?

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
syn leventm'nin kodlarından esinlenerek acemice hazırlamaya çalıştığım 3 koşullu msgboxda birtürlü döngü kuramadım.
1. veya 2. koşul sağlandığında msgbox çıkıyor ama durduramıyorum.
3. koşul sağlandığında 2. koşulun msjı çıkıyor.
biryeri silmişim (kafa karıştı, neresi hatırlamıyorum ) işlem yapmaya kalkınca yine msj çıkıyor.


Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Shapes("AutoShape 3").Visible = True
ActiveSheet.Shapes("AutoShape 3").Select
If [b11] > 1 Then GoTo mesaj1
If [b15] > [b16] Then GoTo mesaj2
If [b17] > 20000 Then GoTo mesaj3
mesaj1:
Selection.Characters.Text = Chr(10) & Chr(10) & "bre melun, % ler toplamı %100 den fazla olamaz! "
GoTo göster
mesaj2:
Selection.Characters.Text = Chr(10) & Chr(10) & "bre melun, tarih hatası! "
GoTo göster
mesaj3:
Selection.Characters.Text = Chr(10) & Chr(10) & "bre melun, zaman! "
göster:
With Selection.Font
.Name = "Blackadder ITC"
.FontStyle = "Normal"
.Size = 20
.ColorIndex = 3
End With
For a = 0 To 245 Step 5
DoEvents
ActiveSheet.Shapes("AutoShape 3").Height = a
Next
Target.Activate
Target = ""
End Sub


not:ilk konu başlığı seçimi kötü oldu, herkesten özür.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Üzerinde düşünülürse kodlar kısaltılabilir, ancak şimdilik aşağıdaki gibi denerseniz işinizi görecektir.

Kod:
Private Sub Worksheet_Calculate()
If [b17] > 20000 And [b15] <> "" And [b16] <> "" Then
ActiveSheet.Shapes("AutoShape 3").Visible = True
ActiveSheet.Shapes("AutoShape 3").Select
 Selection.Characters.Text = Chr(10) & Chr(10) & "bre melun, zaman! "
    With Selection.Font
        .Name = "Blackadder ITC"
        .FontStyle = "Normal"
        .Size = 20
        .ColorIndex = 3
    End With
For a = 0 To 245 Step 5
DoEvents
ActiveSheet.Shapes("AutoShape 3").Height = a
Next
[b17].Activate
End If
End Sub
 
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [b5:b10]) Is Nothing Then GoTo 10
If Not Intersect(Target, [b15:b16]) Is Nothing Then GoTo 20
Exit Sub
10 If [b11] > 1 Then
ActiveSheet.Shapes("AutoShape 3").Visible = True
ActiveSheet.Shapes("AutoShape 3").Select
Selection.Characters.Text = Chr(10) & Chr(10) & "bre melun, % ler toplamı %100 den fazla olamaz! "
    With Selection.Font
        .Name = "Blackadder ITC"
        .FontStyle = "Normal"
        .Size = 20
        .ColorIndex = 3
    End With
For a = 0 To 245 Step 5
DoEvents
ActiveSheet.Shapes("AutoShape 3").Height = a
Next
Target.Activate
Target = ""
End If
Exit Sub
20 If [b15] > [b16] And [b15] <> "" And [b16] <> "" Then
ActiveSheet.Shapes("AutoShape 3").Visible = True
ActiveSheet.Shapes("AutoShape 3").Select
Selection.Characters.Text = Chr(10) & Chr(10) & "bre melun, tarih hatası! "
With Selection.Font
        .Name = "Blackadder ITC"
        .FontStyle = "Normal"
        .Size = 20
        .ColorIndex = 3
    End With
For a = 0 To 245 Step 5
DoEvents
ActiveSheet.Shapes("AutoShape 3").Height = a
Next
Target.Activate
Target = ""
End If
End Sub
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
B17>20000 olunca 3.ko&#351;ul ger&#231;ekle&#351;iyor. Bu durumda B16 y&#305; silmeli ve ba&#351;a d&#246;nmeli. B16 silinmiyor ve ayn&#305; &#351;ekilde B16 ya yanl&#305;&#351; giri&#351; yap&#305;nca (B17>20000 olunca) de&#287;erlendirmiyor.
 
Üst