AccessTr.neT
iff formülünü makroya çevirme - Baskı Önizleme

+- AccessTr.neT (https://accesstr.net)
+-- Forum: Microsoft Access (https://accesstr.net/forum-microsoft-access.html)
+--- Forum: Access Cevaplanmış Soruları (https://accesstr.net/forum-access-cevaplanmis-sorulari.html)
+--- Konu Başlığı: iff formülünü makroya çevirme (/konu-iff-formulunu-makroya-cevirme.html)

Sayfalar: 1 2 3 4


Cvp: iff formülünü makroya çevirme - maytas - 29/03/2012

(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



Cvp: iff formülünü makroya çevirme - kokotuna - 29/03/2012

syn maytas verdiğiniz kod ELSEIF SPT(N30)>15 yazısında hata veriyor?


Cvp: iff formülünü makroya çevirme - maytas - 29/03/2012

(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.


Cvp: iff formülünü makroya çevirme - kokotuna - 29/03/2012

bende şimdi farketmiştim tam teşekkür ederim.


Cvp: iff formülünü makroya çevirme - ayhan2122 - 29/03/2012

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.


Cvp: iff formülünü makroya çevirme - kokotuna - 30/03/2012

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