Vba'da saati sayıya çevirme

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,623
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Merhaba,

Aşağıdaki örnekte tarihi sayıya çevirebildim, ama saati bir türlü çeviremiyorum.Doğrusu nasıl olur, yardımcı olabilir misiniz.

Kod:
MsgBox CLng(CDate("15.11.2014"))

 a = Format(88 & ":00:00", "hh:mm:ss")

MsgBox CLng(a)
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
00:00:00 ile 23:59:59 arasındaki bir değeri TimeValue fonksiyonu ile Double değere dönüştürmek mümkün. 88 ile başlayan bir saat olmadığı için hata verir.

Kod:
MsgBox CDbl(TimeValue("23:59:59"))
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,623
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Mancubus ustat cevap ıcın tesekkur ederım.Sayıyacevır fonksıyonı ile 88:00'ın sayısal degerını bulabılıyorum ama vba'da ıslemıyor zaten öyle bir fonksiyonda yok.Olması gerektiğini düsünüyorum.
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
rica ederim. tam olarak ihtiyaç nedir?
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
sayıyaçevir fonksiyonunun ingilizcesi VALUE fonksiyonudur. bunun VBA eşiti ise Val fonksiyonu. Ancak kullanırken dikkat etmek gerekir, . (nokta)'yı ondalık ayracı olarak kabul eder.

VBA sularında kulaç atacaksak en azından excel'in ingilizcesine hakim olmak fayda sağlar. çünkü dünyanın her yerinde VBA ingilizce.

Kod:
MsgBox Val("88:30:30")
88 rakamını döndürür.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,623
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
sayıyaçevir fonksiyonunun ingilizcesi VALUE fonksiyonudur. bunun VBA eşiti ise Val fonksiyonu. Ancak kullanırken dikkat etmek gerekir, . (nokta)'yı ondalık ayracı olarak kabul eder.

VBA sularında kulaç atacaksak en azından excel'in ingilizcesine hakim olmak fayda sağlar. çünkü dünyanın her yerinde VBA ingilizce.

Kod:
MsgBox Val("88:30:30")
88 rakamını döndürür.
Üstat çıkan sonuç yanlış, sonucun 3,666666667 olması lazım.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,623
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Hocam selam,

Çözümü deneme yanılma yöntemiyle buldum

Kod:
MsgBox CDbl(VBA.TimeSerial(88, 0, 0))
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
Üstat çıkan sonuç yanlış, sonucun 3,666666667 olması lazım.
sonuç yanlış değil. Val fonksiyonu metinden rakamsal değeri çıkarırır.

TimeSerial derman oldu ise, soruyu ortaya koyma şekli farklı olmalıydı.

DateSerial ve TimeSerial fonksiyonları her formattaki tarih ve saat değerlerini tüm dünyada tek bir formatta ifade edebilmek için geliştirilmiş.

bu nedenle ben bu fonksiyonların üzerinde durmadan devam ettim.

sorun çözüldüğüne göre her şey yolunda. :)
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,623
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Mancubus hocam iyi akşamlar,aslında yanlış demek istemedim, aradığım cevap değildi. Aradığım cevabı ise belli ettiğimi düşünüyorum. sayıyaçevir'in birebir karşılığını vba'da ben bulamadım, val fonksiyonu çok farklı.
 
Son düzenleme:
Üst