Function yaz$(sayi)
Dim b$(9)
Dim o$(1)
Dim m$(4)
Dim v$(15)
Dim c$(2)
b$(0) = ""
b$(1) = "BİR"
b$(2) = "İKİ"
b$(3) = "ÜÇ"
b$(4) = "DÖRT"
b$(5) = "BEŞ"
b$(6) = "ALTI"
b$(7) = "YEDİ"
b$(8) = "SEKİZ"
b$(9) = "DOKUZ"
o$(0) = ""
o$(1) = "ON"
a$ = Str(sayi)
If Left$(a$, 1) = Empty Then pozitif = 1 Else pozitif = 0
a$ = Right$(a$, Len(a$) - 1)
For x = 1 To Len(a$)
If (Asc(Mid$(a$, x, 1)) > Asc("9")) Or (Asc(Mid$(a$, x, 1)) < Asc("0")) Then GoTo hata
Next x
If Len(a$) > 15 Then GoTo hata
a$ = String(15 - Len(a$), "0") + a$
For x = 1 To 15
v(x) = Val(Mid$(a$, x, 1))
Next x
a$ = Empty
For x = 0 To 4
c(1) = v((x * 3) + 2)
c(2) = v((x * 3) + 3)
If c(1) = 0 Then
e$ = Empty
End If
e$ = e$ + o$(c(1)) + b$(c(2))
If e$ <> "" Then e$ = e$ + m$(x)
s$ = s$ + e$
Next x
If s$ = "" Then s$ = "SIFIR"
If pozitif = "" Then s$ = "" + s$
yaz$ = s$
GoTo tamam
hata: yaz$ = "Hata"
tamam:
End Function
Arkadaşlar yukarıdaki yolla 19'a kadar yazıdırabiliyorum. Ancak Benim kullandığım dosyada en fazla 10 güne kadar değer sınırlaması var. dolayısı ile 11-19 arası benim işime yaramıyor. Bu makroyu 11 ve üzeri geldiğinde kabul etmemesini nasıl sağlarım.
Dim b$(10)
Dim m$(4)
Dim v$(15)
Dim c$(1)
b$(0) = ""
b$(1) = "BİR"
b$(2) = "İKİ"
b$(3) = "ÜÇ"
b$(4) = "DÖRT"
b$(5) = "BEŞ"
b$(6) = "ALTI"
b$(7) = "YEDİ"
b$(8) = "SEKİZ"
b$(9) = "DOKUZ"
b$(10) = "ON"
c(1) = v((x * 3) + 3)
e$ = e$ + b$(c(1))
şeklinde yazdığımda 9 kadar yazıyor 10'u sıfır olarak görüyor. Buda doğal çünkü yukarıdaki değerler 9 üzerinde değer girildiğinde sağdan başlayıp ona göre çeviriyor.
Yardımlarınızı bekliyorum, teşekkürler.
Dim b$(9)
Dim o$(1)
Dim m$(4)
Dim v$(15)
Dim c$(2)
b$(0) = ""
b$(1) = "BİR"
b$(2) = "İKİ"
b$(3) = "ÜÇ"
b$(4) = "DÖRT"
b$(5) = "BEŞ"
b$(6) = "ALTI"
b$(7) = "YEDİ"
b$(8) = "SEKİZ"
b$(9) = "DOKUZ"
o$(0) = ""
o$(1) = "ON"
a$ = Str(sayi)
If Left$(a$, 1) = Empty Then pozitif = 1 Else pozitif = 0
a$ = Right$(a$, Len(a$) - 1)
For x = 1 To Len(a$)
If (Asc(Mid$(a$, x, 1)) > Asc("9")) Or (Asc(Mid$(a$, x, 1)) < Asc("0")) Then GoTo hata
Next x
If Len(a$) > 15 Then GoTo hata
a$ = String(15 - Len(a$), "0") + a$
For x = 1 To 15
v(x) = Val(Mid$(a$, x, 1))
Next x
a$ = Empty
For x = 0 To 4
c(1) = v((x * 3) + 2)
c(2) = v((x * 3) + 3)
If c(1) = 0 Then
e$ = Empty
End If
e$ = e$ + o$(c(1)) + b$(c(2))
If e$ <> "" Then e$ = e$ + m$(x)
s$ = s$ + e$
Next x
If s$ = "" Then s$ = "SIFIR"
If pozitif = "" Then s$ = "" + s$
yaz$ = s$
GoTo tamam
hata: yaz$ = "Hata"
tamam:
End Function
Arkadaşlar yukarıdaki yolla 19'a kadar yazıdırabiliyorum. Ancak Benim kullandığım dosyada en fazla 10 güne kadar değer sınırlaması var. dolayısı ile 11-19 arası benim işime yaramıyor. Bu makroyu 11 ve üzeri geldiğinde kabul etmemesini nasıl sağlarım.
Dim b$(10)
Dim m$(4)
Dim v$(15)
Dim c$(1)
b$(0) = ""
b$(1) = "BİR"
b$(2) = "İKİ"
b$(3) = "ÜÇ"
b$(4) = "DÖRT"
b$(5) = "BEŞ"
b$(6) = "ALTI"
b$(7) = "YEDİ"
b$(8) = "SEKİZ"
b$(9) = "DOKUZ"
b$(10) = "ON"
c(1) = v((x * 3) + 3)
e$ = e$ + b$(c(1))
şeklinde yazdığımda 9 kadar yazıyor 10'u sıfır olarak görüyor. Buda doğal çünkü yukarıdaki değerler 9 üzerinde değer girildiğinde sağdan başlayıp ona göre çeviriyor.
Yardımlarınızı bekliyorum, teşekkürler.