(29/03/2012, 10:46)kokotuna yazdı: [ -> ]arkadaşlar sorunu ifadelerdeki noktalı virgülleri(;) virgüle(,) e çevirerek çözdüm yalnız bir tek formülde sanırım iç içe iki tane iff olduğu için hata veriyor oda şu;
YASSDÜZELTMESİ: IIf([SPT(N30)]="R";"R";IIf([SPT(N30)]>15;(15+0,5*([SPT(N30)]-15));[SPT(N30)]))
bunu nasıl düzenlemem gerekir?
Dosyanıza bakamadım, ama bu formülün
Vba kod olarak açılımını alttaki gibi düzenleyip deneyebilirsiniz.
IF SPT(N30)="R" THEN
YASSDÜZELTMESİ="R"
ELSEIF SPT(N30)>15
YASSDÜZELTMESİ=15+0,5*SPT(N30)-15
ELSE
YASSDÜZELTMESİ=SPT(N30)
END IF
syn maytas verdiğiniz kod ELSEIF SPT(N30)>15 yazısında hata veriyor?
(29/03/2012, 11:31)kokotuna yazdı: [ -> ]syn maytas verdiğiniz kod ELSEIF SPT(N30)>15 yazısında hata veriyor?
1
2
3
4
5
6
7 IF SPT(N30)="R" THEN
YASSDÜZELTMESİ="R"
ELSEIF SPT(N30)>15 THEN
YASSDÜZELTMESİ=15+0,5*SPT(N30)-15
ELSE
YASSDÜZELTMESİ=SPT(N30)
END IF
Not defterinde yazmıştım kodları, "THEN" unutmuşum.
bende şimdi farketmiştim tam teşekkür ederim.
Sn kokotuna;
.mdb dosyasında dikkat etmediğiniz konular;
Tablolardaki alan adları çok kötü isimlendirilmiş. Çarpma işlemlerinde kullanılan * ( - vs karakterleri kesinlikle kullanmamanız gerekir.
örn: SPT(15) yerine SPT15,
örn: N60 = N ( CER / 60 ) x Nt x Nö x Nç yerine N60x gibi kullanılmalı.
Kesirli sayılar kullanılırken virgül ( , ) değil nokta ( . ) kullanılmalıdır. örn: 1.5
Gelelim
IIF kullanımına . Neyi nasıl hesapladığınızı bilmiyorum ama yöntem örn:
Kod:
Private Sub HesapLa()
If SPT30 <> "R" And SPT45 <> "R" Then
SPTn30 = Val(SPT30) + Val(SPT45)
End If
If YASSDÜZELTMESİ <> "R" Then
N60x = YASSDÜZELTMESİ * 0.9
End If
If SPTn30 = "R" Then
YASSDÜZELTMESİ = "R"
Else
If SPTn30 > 15 Then
YASSDÜZELTMESİ = 15 + (0.5 * (SPT30 - 15))
Else
YASSDÜZELTMESİ = SPT30
End If
End If
If YASSDÜZELTMESİ <> "R" Then
N60 = CLng(Nz(YASSDÜZELTMESİ.Value, 0)) * 0.75
End If
End Sub
Private Sub Komut25_Click()
Call HesapLa
End Sub
Burada her hangi bir denetimin olayına Call Hesapla kullanabilirsiniz.
arkadaşlar yardımlarınız sahesinde birazda kendim düzenleme yaparak istediğim sonucu ulaştım ve diğer arkadaşlara yol göstermesi için son kodu veriyorum... Hepinize çok teşekkür ederim.
Private Sub Komut25_Click()
If SPT30 <> "R" And SPT45 <> "R" Then
SPTN30 = Val(SPT30) + Val(SPT45)
Else
SPTN30 = "R"
End If
If SPTN30 = "R" Then
YASSDÜZELTMESİ = " "
ElseIf SPTN30 > 15 Then
YASSDÜZELTMESİ = 15 + 0.5 * (SPTN30 - 15)
Else
YASSDÜZELTMESİ = SPTN30
End If
If SPTN30 = "R" Then
TİJENERJİDÜZELTMESİ = " "
Else
TİJENERJİDÜZELTMESİ = YASSDÜZELTMESİ * 0.75
End If
If SPTN30 = "R" Then
TİJUZUNLUGUDÜZELTMESİ = " "
Else
TİJUZUNLUGUDÜZELTMESİ = TİJENERJİDÜZELTMESİ * 0.9
End If
End Sub