If Else ile yazılan kodda yanlışlık mı var?

Katılım
31 Mayıs 2006
Mesajlar
62
Merhaba Arkadailar,

aşağıdaki kodu belgeme uyguladım ama arada sırada kod görevini getirmiyor.

Sanırım kodun mantığında bir hata yaptım ve görevini getirmez hale geliyor. acaba başka türlü mü bu kodu yazmalıyım?

sanırım alt alta end if sonlandırıcısının gelmesinden kaynaklı bir problem bu.

kodda bir yanlışlık görüyorsanız lütfen belirtin.

şimdiden teşekkürler.


Private Sub KALIP1_Change()
If KALIP1.Value = "A1" Or KALIP1.Value = "A2" Then
EBAT1.RowSource = "ana!C1:C3"
Else
If KALIP1.Value = "B1" Or KALIP1.Value = "B2" Then
EBAT1.RowSource = "ana!D1:D2"
Else
EBAT1.RowSource = "ana!E1"
End If
End If
End Sub
 
Katılım
5 Nisan 2007
Mesajlar
89
Excel Vers. ve Dili
2007
Kod:
Private Sub KALIP1_Change()
If KALIP1.Value = "A1" Or KALIP1.Value = "A2" Then
EBAT1.RowSource = "ana!C1:C3"
ElseIf KALIP1.Value = "B1" Or KALIP1.Value = "B2" Then
EBAT1.RowSource = "ana!D12"
Else
EBAT1.RowSource = "ana!E1"
End If
End Sub
Şeklinde deneyiniz.
İyi çalışmalar.
 
Katılım
31 Mayıs 2006
Mesajlar
62
Teşekkürler Ceyrek bey,

Vermiş olduğunuz kodu uyguladığım zaman da aşağıdaki satır görevini yerine getirmiyor;

ElseIf KALIP1.Value = "B1" Or KALIP1.Value = "B2" Then

yani B1 veya B2 seçtiğim zaman

EBAT1.RowSource = "ana!D12" gelmesi gerekirken gelmiyor.

mantiken çalışması gerek ama anlamadım neden olmuyor.
 
Katılım
31 Mayıs 2006
Mesajlar
62
Ceyrek bey özür dilerim, copy past yaparken eksik girmişim,

EBAT1.RowSource = "ana!D12" değil de

EBAT1.RowSource = "ana!D1: D2" olucak. şimdi böyle deniyorum.

Teşekkürler.

Ayrıca bana yukarıdaki ilk yazdığım kodun mantık hatasını söyliyebilirseniz sevinirim. böylece bir şey daha öğrenmiş olucam.

İyi çalışmalar Dilerim
 
Katılım
5 Nisan 2007
Mesajlar
89
Excel Vers. ve Dili
2007
Şimdiye kadar sebebini hiç düşünmemiştim ama aynı değişkenin farklı durumları söz konusuysa bu şekilde yaptım şimdiye kadar ama sanırım bir açıklama getirebilirim. (Eğer bu durumlar daha da uzarsa, üstüste 4-5 tane elseif yerine Select CASE yapısını kullanmamınızı tavsiye ederim. )
Kod:
Private Sub KALIP1_Change()
If KALIP1.Value = "A1" Or KALIP1.Value = "A2" Then
EBAT1.RowSource = "ana!C1:C3"
[COLOR="Red"]Else[/COLOR]
If KALIP1.Value = "B1" Or KALIP1.Value = "B2" Then
EBAT1.RowSource = "ana!D12"
[COLOR="Blue"]Else[/COLOR]
EBAT1.RowSource = "ana!E1"
End If
End If
End Sub
Sizin kodlarda, değer A1,A2 olunca bir sıkıntı yok, B1,B2 olunca sadece kırmızı Else geçerli oluyor, A1,A2,B1,B2 dışında bir değer olması, her iki Else ifadesini de geçerli kılıyor, oyüzden sadece ilk Else çalışıp, diğerini dikkate almıyor sanırım. Benim tahminim bu yönde ama amatör bir programcı olarak daha fazlası hakkında yorumları ustalara bırakıyorum.
İkinci koşulunuz KALIP1.Value yerine başka bir değişkene bağlı olsaydı tahminime göre bir sorun yaşamazdınız.
İyi çalışmalar.
 
Katılım
31 Mayıs 2006
Mesajlar
62
Tekrar merhaba Sn. Ceyrek,

Aşağıdaki kodu denedim ve tabi ki olmadı :) ilk kez deneme yaptım.

Private Sub KALIP1_Change()
Dim deger
deger = KALIP1.Value
Select Case "A1" Or "A2"
EBAT1.RowSource = "ana!D1:D2"
Select Case "B1" Or "B2"
EBAT1.RowSource = "ana!C1:C3"
Select Case "C1" Or "C2"
EBAT1.RowSource = "ana!E1"
End Sub

Select Case 'e örnek yazabilir misiniz?

Teşekkürler.
 
Katılım
31 Mayıs 2006
Mesajlar
62
Private Sub KALIP1_Change()
Select Case KALIP1.Value
Case "A1" Or "a2"
EBAT1.RowSource = "ana!D1:D2"
Case B1 Or B2
EBAT1.RowSource = "ana!C1:C3"
Case C1 Or C2
EBAT1.RowSource = "ana!E1"
End Select
End Sub



Bir de bunu denedim "Or" komutu olmadan çalışıyor ama "Or" olunca çalışmıyor. burada "or" fonksiyonunu nasıl kullanabilirim?

(Bu arada hem yazıp hem de uğreşıyorum ko üzerinde) :)

Teşekkürler
 
Katılım
5 Nisan 2007
Mesajlar
89
Excel Vers. ve Dili
2007
or yerine , (virgül) deneyiniz.
Case "A1", "a2"
İyi çalışmalar...
 
Katılım
31 Mayıs 2006
Mesajlar
62
@ceyrek
Çok Teşekkürler;

Kodun Bitmiş hali;

Private Sub KALIP1_Change()
Select Case KALIP1.Value
Case "A1" , "a2"
EBAT1.RowSource = "ana!D1:D2"
Case "B1" , "B2"
EBAT1.RowSource = "ana!C1:C3"
Case "C1" , "C2"
EBAT1.RowSource = "ana!E1"
End Select
End Sub
 
Üst