• DİKKAT

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

Uzunluk Formülünü Kod Satırına Eklemek

Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Merhaba Arkadaşlar,

Döviz kurları için bu forumun değerli üstadlarının çalışmasını keyifle kullanıyoruz. Allah hepsinden razı olsun. Sadece minik bir durum oluştu. Bazı dövizler virgülden sonra 4, bazıları 5 haneli oluyor. Acaba aşağıdaki satıra UZUNLUK formülü nasıl monte edilebilir ?

Sonuc = VBA.Left(sonuclar1(1), 6)

ben şöyle denedim olmadı :
Sonuc = VBA.Left(sonuclar1(1), Len(sonuclar1(1)))
Sonuc = VBA.Left(sonuclar1(1), VBA.Len(sonuclar1(1)))
Sonuc = VBA.Left(sonuclar1(1), Length(sonuclar1(1)))
Sonuc = VBA.Left(sonuclar1(1), Length(sonuclar1))
 
Merhaba,
İlk iki seçenek doğru sonuç verir ama bunları hangi mantıkla kurguladığınızı anlayamadım.
Bir değeri soldan, uzunluğu kadar kırparsanız aynı değeri elde edersiniz.
 
ÖmerBey üstadım merhaba, mantı şöyle;
eğer hane sayısı 5 ise 7 olsun, 4 ise 6 olsunu ayarlamaya çalışıyorum
 
eğer hane sayısı 5 ise 7 olsun, 4 ise 6 olsunu ayarlamaya çalışıyorum
?
Len koduyla o değerin tam uzunluğunu elde edersiniz.
Yapmak istediğiniz işlemi küçük bir örnekle anlatır mısınız? Mesela; sonuclar1(1) hangi değeri getiriyor ve siz yazacağınız kodla hangi değeri elde etmek istiyorsunuz?
 
Function kur(veri As Date)
Application.Volatile
Set dnm = CreateObject("MSXML2.XMLHTTP")
gun = veri - 1
Do
a = Year(gun) & Format(Month(gun), "0#") & "/" & Replace(CStr(gun), ".", "")
baglan = "http://www.tcmb.gov.tr/kurlar/" & a & ".xml"
'baglan = "http://www.tcmb.gov.tr/kurlar/today.xml"
dnm.Open "get", baglan, False
dnm.send
icerik$ = dnm.responseText
temizlik = Split(icerik, "<Currency CrossOrder="): a = 1
icerik$ = ""
On Error Resume Next
cr = IsError(InStr(temizlik(1), "</CurrencyName>"))
gun = gun - 1
Loop While cr = ""
x = 2
sonuclar = Split(temizlik(1), "</CurrencyName>")
sonuclar1 = Split(sonuclar(1), "<ForexBuying>")
Sonuc = VBA.Left(sonuclar1(1), 6)
kur = CDbl(Replace(Sonuc, ".", ","))
End Function
 
üstad kodun tamamı bu şekilde.
Sonuc = VBA.Left(sonuclar1(1), 6) olunca örneğin, İSVEÇ KRONU döviz kuru 0.60771 yani 7 karakter
ama 6 olunca 0.6077 kısmını alıyor, 1 i almıyor. Bu döviz kuru için uzunluğun 7 olması gerekir
 
Tekrar merhaba,
Şu iki koddan birini deneyiniz.
Sonuc = Left(sonuclar1(1), InStr(1, sonuclar(1), "<"))
Sonuc = Split(sonuclar1(1), "<")(0)
 
Rica ederim,
İyi çalışmalar diliyorum...
 
Geri
Üst