• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

CInt ile çalışan kod Val ile çalışmıyor?..

Katılım
13 Haziran 2009
Mesajlar
486
Excel Vers. ve Dili
excel 2007 tr
Private Sub TextBox232_Enter()
TextBox232 = Val(TextBox208 * TextBox170 - Val(TextBox156)) / Val(TextBox208 * TextBox170) * 100
End Sub


Yukarıdaki kodu CInt ile yapmıştım,lakin bununla yapılan kodlarda boş satır olmayacakmış dediler Val i takvsiye ettiler,Bende uyguladım..Lakin çalışmaz oldu.

Formülüm şöyle...
(D)X(A) - Uygulama
F=...................................x100
(D)X(A)

F=232
D=208
A=170
Uyg=156

şimdiden teşekkürler.
 
Üst satıra
On error resume next
yazınız.
val yazan yerlerede cdbl yazınız.
 
TextBox232 = ((Val(TextBox208) *VAL( TextBox170)) - Val(TextBox156)) / (Val(TextBox208) * VAL(TextBox170) * 100)

Şeklinde deneyin çalışacakmı birde şu konu var diyelimki textbox170 boş sayıyla 0 çarpımı 0 olacaktır.
 
VAL kullanmanın sakıncaları var.
En başta ondalık basamaklı değerleri doğru çalıştırmıyor
Ve string değer döndürüyor.
Onun için ondalıklı değer kullanıyorsanız cdbl,tamsayı kullanıyorsanız clng kullanınız.
En başınada on error resume next satrıını yazarsanız doğru sonuç alırsınız.:cool:
 
Merhaba,

"Val" yerine şunu da kullanabilirsiniz.

Kod:
Public Function ValA(str_arg As String) As Double
    If IsNull(str_arg) Or IsEmpty(str_arg) Then
        ValA = 0
    ElseIf IsNumeric(str_arg) Then
        ValA = CDbl(str_arg)
    End If
End Function
 
Zeki hocamın fonksiyonunu bir modüle yazıp kullanabilirsiniz.
Bu takdirde val yazdığınız yerlere ValA yazmalısınız.
 
Merhaba,

"Val" yerine şunu da kullanabilirsiniz.

Kod:
Public Function ValA(str_arg As String) As Double
    If IsNull(str_arg) Or IsEmpty(str_arg) Then
        ValA = 0
    ElseIf IsNumeric(str_arg) Then
        ValA = CDbl(str_arg)
    End If
End Function



Teşekkür ederim..Modüle eklenmesi gerektiğini bilmiyordum.
Bir şey eklemek mümkün kü.
33,33333 sonucunu 33,3 yazalım
tşkler
 
Zeki hocamın fonksiyonunu bir modüle yazıp kullanabilirsiniz.
Bu takdirde val yazdığınız yerlere ValA yazmalısınız.


Zeki hocam bizi keşke acami görseydi,lütfetmişler çırak görmüşler ama ValA yazılması gerektiğini,ve Modüle yazılması gerektiğini bilmeden oraya buraya yapıştırarak uğraşıp duracaktık.
:)
Tşkler yeniden
 
Yuvarlama (Round) için de şunu kullanın. Yine modulde olmalı ki her yerden çağırabilesiniz.

Kod:
Public Function [B]RoundA[/B](Sayi, Optional Basamak As Long)
Kat& = 10 ^ Abs(Basamak)
If Basamak >= 0 Then RoundA = CDbl(FormatNumber(Left(Sayi, 30), Basamak))
If Basamak < 0 Then RoundA = CDbl(RoundA(FormatNumber(Left(Sayi, 30) / Kat), 0) * Kat)
End Function
 
Private Sub TextBox232_Enter()
TextBox232 = Val(TextBox208 * TextBox170 - Val(TextBox156)) / Val(TextBox208 * TextBox170) * 100
End Sub


Yukarıdaki kodu CInt ile yapmıştım,lakin bununla yapılan kodlarda boş satır olmayacakmış dediler Val i takvsiye ettiler,Bende uyguladım..Lakin çalışmaz oldu.

Formülüm şöyle...
(D)X(A) - Uygulama
F=...................................x100
(D)X(A)

F=232
D=208
A=170
Uyg=156

şimdiden teşekkürler.


Yukarıdaki kod gibi 12 tane kod kullanmam gerek...Bunları kısaltabilmemiz mümkün mü acaba..........................
Aklıma gelen bir çözüm var ama mümkün olup olmayacağını bilemiyorum..
Acaba tek tek TextBox adlarını yazacağımıza hesabın yapılacağı textbox232...
(232-245) kutusuna "Devreden","Gelen","Uygulanan" vs diye Label adlarını tanımlasak olur mu?
Dosyayı ve kodları kopyalıp ayırdım,ekledim..hatalı da olabilir..
 

Ekli dosyalar

Yuvarlama (Round) için de şunu kullanın. Yine modulde olmalı ki her yerden çağırabilesiniz.

Kod:
Public Function [B]RoundA[/B](Sayi, Optional Basamak As Long)
Kat& = 10 ^ Abs(Basamak)
If Basamak >= 0 Then RoundA = CDbl(FormatNumber(Left(Sayi, 30), Basamak))
If Basamak < 0 Then RoundA = CDbl(RoundA(FormatNumber(Left(Sayi, 30) / Kat), 0) * Kat)
End Function

bunu aynen aldım 12 tane userformun olduğu çalışmamda bir modül ekleyerek yapıştırdım ama değişen bişi olmadı..galiba çağırma işi eksik kaldı...
Private Sub TextBox243_Enter()
TextBox243 = ValA(TextBox219 * ValA(TextBox171) - ValA(TextBox167)) / ValA(TextBox219 * TextBox171) * 100
End Sub
formül bu ve alt alta 12 tane daha var..
 
Geri
Üst