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.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Üst satıra
On error resume next
yazınız.
val yazan yerlerede cdbl yazınız.
 

fedeal

Banned
Katılım
29 Mayıs 2008
Mesajlar
1,985
Excel Vers. ve Dili
2003 tr
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.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
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:
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
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
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Zeki hocamın fonksiyonunu bir modüle yazıp kullanabilirsiniz.
Bu takdirde val yazdığınız yerlere ValA yazmalısınız.
 
Katılım
13 Haziran 2009
Mesajlar
486
Excel Vers. ve Dili
excel 2007 tr
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
 
Katılım
13 Haziran 2009
Mesajlar
486
Excel Vers. ve Dili
excel 2007 tr
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
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
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
 
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.

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

Katılım
13 Haziran 2009
Mesajlar
486
Excel Vers. ve Dili
excel 2007 tr
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..
 
Üst