AccessTr.neT

Tam Versiyon: Vba Da İf Else Elseıf Yapısı Hakkında Bir Soru.
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Merhaba
Uygulamam da Menuden tıklandığında açılan pergole formumda Cephe Ölçüsü textbox'ının exit olay yordamına yazdığım kod da bana çok garip gelen neden olmadığı konusunda anlamlandıramadığım bir durum var. 2 şartım var. 1.si Girilen cephe ölçüsü değerinin 8000 e eşit ve büyük olduğu bir durumda ray sayısını 3 den 4 e arttırmak ki bu durumu gerçekleştiriyorum yazdığım kodda. 2.si ise Girilen Cephe ölçüsü değeri eğer 4000 den küçük ise bu seferde ray sayısını 3 den 2 ye düşürmek. Bunu bir türlü gerçekleştiremedim. Yani ilk if durumuna bakılır oradaki şart gerçekleşmiyorsa sonraki if bloğuna bakılır. Hangi if bloğundaki Şart gerçekleşiyorsa o if bloğundaki kod çalışır benim bildiğim. Burada neden çalışmıyor anlamadım. Yardımlarınız için teşekkür ederim.

Not : Else durumunda da ray sayısı 3 de stabil kalacak.

[Resim: do.php?img=11287]

Kod:
Private Sub TextBox_CepheOlcusu_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If TextBox_CepheOlcusu.Value >= 8000 Then
    result = MsgBox("Cephe ölçüsü Limit değerin üstünde..." & vbNewLine & "Ray sayısı güncellenecek.", vbYesNo + vbCritical, "WINPERAX Teklif Bilgi Ekranı")
If result = vbYes Then
    ComboBox_RaySayisi.ListIndex = 2
    MsgBox "Ray sayısı güncellendi", vbExclamation, "WINPERAX Teklif Bigi Ekranı"
Else: result = vbNo
    MsgBox "DİKKAT" & vbNewLine & "Sistem bileşenlerinden Ray Sayısı güncellenemedi...", vbOKOnly + vbCritical, "WINPERAX Teklif Bilgi Ekranı"
    ComboBox_RaySayisi.ListIndex = 1

If TextBox_CepheOlcusu.Value < 4000 Then
    result = MsgBox("Cephe ölçüsü Limit değerin altında..." & vbNewLine & "Ray sayısı güncellenecek.", vbYesNo + vbCritical, "WINPERAX Teklif Bilgi Ekranı")
If result = vbYes Then
    ComboBox_RaySayisi.ListIndex = 0
    MsgBox "Ray sayısı güncellendi", vbExclamation, "WINPERAX Teklif Bilgi Ekranı"
Else: result = vbNo
    MsgBox "DİKKAT" & vbNewLine & "Sistem bileşenlerinden Ray Sayısı güncellenemedi...", vbOKOnly + vbCritical, "WINPERAX Teklif Bilgi Ekranı"
    ComboBox_RaySayisi.ListIndex = 1

End If
End If
End If
End If


End Sub
Alttaki kodu dener misin?
Private Sub TextBox_CepheOlcusu_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox_CepheOlcusu.Value >= 8000 Then
ComboBox_RaySayisi.ListIndex = ComboBox_RaySayisi.ListIndex + 1
result = MsgBox("Cephe ölçüsü Limit değerin üstünde..." & vbNewLine & "Ray sayısı güncellenecek.", vbYesNo + vbCritical, "WINPERAX Teklif Bilgi Ekranı")
If result = vbYes Then
MsgBox "Ray sayısı güncellendi", vbExclamation, "WINPERAX Teklif Bigi Ekranı"
  Else: result = vbNo
      MsgBox "DİKKAT" & vbNewLine & "Sistem bileşenlerinden Ray Sayısı güncellenemedi...", vbOKOnly + vbCritical, "WINPERAX Teklif Bilgi Ekranı"
    ComboBox_RaySayisi.ListIndex = 1
End If
ElseIf TextBox_CepheOlcusu.Value < 4000 Then
  result = MsgBox("Cephe ölçüsü Limit değerin altında..." & vbNewLine & "Ray sayısı güncellenecek.", vbYesNo + vbCritical, "WINPERAX Teklif Bilgi Ekranı")
ComboBox_RaySayisi.ListIndex = ComboBox_RaySayisi.ListIndex - 1
If result = vbYes Then
MsgBox "Ray sayısı güncellendi", vbExclamation, "WINPERAX Teklif Bigi Ekranı"
  Else: result = vbNo
      MsgBox "DİKKAT" & vbNewLine & "Sistem bileşenlerinden Ray Sayısı güncellenemedi...", vbOKOnly + vbCritical, "WINPERAX Teklif Bilgi Ekranı"
    ComboBox_RaySayisi.ListIndex = 1
  End If
End If
End Sub
@userx hocam çok teşekkürler. Şimdi uğradığım başarısızlığı hazmetmeye çalışacağım.Img-grin
Devam...