Sayıyı Yazıya Çevirme de Sınırlama getirebilme

Katılım
7 Ağustos 2007
Mesajlar
328
Excel Vers. ve Dili
excell 2003 - 2007
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.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,009
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Amacınız 0-10 arasındaki sayıları yazıya çevirmekse aşağıdaki formülüde kullanabilirsiniz.

A1 hücresindeki değeri yazıya çevirir.
Kod:
=EĞER(A1>10;"";ARA(A1;{0;1;2;3;4;5;6;7;8;9;10};{"SIFIR";"BİR";"İKİ";"ÜÇ";"DÖRT";"BEŞ";"ALTI";"YEDİ";"SEKİZ";"DOKUZ";"ON"}))
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,009
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Eğer makro kodunu kullanmak istiyorum derseniz. Aşağıdaki eklemeyi yaparsanız sınırlama getirmiş olursunuz.

a$ = Str(sayi) satırından önce olmak üzere aşağıdaki kodu ekleyin.

Kod:
If sayi > 10 Then GoTo hata
 
Katılım
7 Ağustos 2007
Mesajlar
328
Excel Vers. ve Dili
excell 2003 - 2007
Korhan Bey teşekkür ederim kod için; kullanacağım. Yalnız 10 rakamını girdiğim de SIFIR yazıyor çözülmesi gereken nokta burası.
Yardımlarınız için teşekkürler.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,009
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

İlginç. Ben verdiğiniz kodu denedim. 19 sayısına kadar yazıya çeviriyor.
 
Katılım
7 Ağustos 2007
Mesajlar
328
Excel Vers. ve Dili
excell 2003 - 2007
haklısınız 19 kadar
o$(0) = ""
0$(1) = "ON" için kullandığımda oluyor ancak ben on rakamını birler basamağından bir değer gibi algılamasını istediğim için;
Dim b$(10)
Dim c$(1)


b$(0) = ""
b$(1) = "BİR"
.......
b$(10) = "ON"

biçiminde de yazdığımda 10 sıfıra eşdeğer gibi algılıyor.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,009
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Sorununuz çözüldü mü?
 
Katılım
7 Ağustos 2007
Mesajlar
328
Excel Vers. ve Dili
excell 2003 - 2007
evet yardımlarınızla çözüldü teşekkürler.
o$ değerlerini yeniden girerek çözdüm; tabiki siz(ler)in yardımlarınızla. Yalnız bi konuda daha yardım rica edeceğim mesela 11 değerini yanlışlıkla girdiğimizi varsayalım yazı ile karşılığını yazmıyor ancak rakamı yine yazıyor. onu yazmasını nasıl engellemeliyim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,009
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Bu sayıları gireceğiniz hücreleri seçin.
Veri-Doğrulama menüsünü açın.
İzin verilen kısmından "Tüm sayı" seçeneğini seçin.
Açılan aralık kutucuklarına 1 ve 10 değerini girin.
Eğer yanlış değer girildiğinde kullanıcıya özel bir mesaj vermek isterseniz "Hata Uyarısı" sekmesini tıklayıp mesajınızı yazın ve tamamı tıkladığınızda işlemini gerçekleşmiş olacaktır.
 
Katılım
7 Ağustos 2007
Mesajlar
328
Excel Vers. ve Dili
excell 2003 - 2007
Özür dilerim konuyu fazlasıyla uzattığım farkındayım, ama girilen verileri textboxlardan aktarıyor
With Selection.Validation
.Delete
.Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="1", Formula2:="10"
.IgnoreBlank = True
.InCellDropdown = True
.ErrorTitle = "GÜN SAYISI"
.ErrorMessage = "Girdiğiniz Gün Sayısı Olması Gerekenden Büyük"
.ShowInput = True
.ShowError = True
End With
bunu dosyaya nasıl uyarlarım. IstGsBox kutucuğunda yazıldığında vermesi lazım.
Dosya Ektedir incelerseniz.

Diğer bir nokta ise Adbox, SoyadBox TshsBox tan aktarılan verilerin küçük olarak yazsam da büyük harfe dönüşmesi, sizlerin yazdığı makrolardan yararlanarak yapayım dedim başaramadım.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,009
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Girilen sayıları kontrol için aşağıdaki kodu kullanabilirsiniz.

Kod:
Private Sub IstGsBox_Change()
    If Not IsNumeric(IstGsBox) Then SendKeys "{BS}"
    If Len(IstGsBox) >= 2 Then
    If IstGsBox.Value < 1 Or IstGsBox.Value > 10 Then
    MsgBox "Lütfen 1-10 arası bir değer giriniz !", vbCritical
    IstGsBox = ""
    End If
    End If
End Sub

Yazılanları büyük harfe çevirmek için aşağıdaki kodu kullanabilirsiniz. Diğerlerini sanırım siz uyarlayabilirsiniz.

Kod:
Private Sub AdBox_Change()
    If IsNumeric(AdBox) Then SendKeys "{BS}"
    [COLOR=red]AdBox = Evaluate("=UPPER(" & """" & AdBox & """" & ")")[/COLOR]
End Sub
 
Katılım
7 Ağustos 2007
Mesajlar
328
Excel Vers. ve Dili
excell 2003 - 2007
Sayın Korhan Ayhan emeğinizi ve yardımlarınızı esirgemediğiniz için teşekkürler. Şahsınızda bütün forumdaki arkadaşlarada yardımları ve destekleri için teşekkür ederim. İyi çalışmalar.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
böyle birşeymi istiyorsunuz

Function Sayı(gun)
If gun = 1 Then
Sayı = "bir"
ElseIf gun = 2 Then
Sayı = "iki"
ElseIf gun = 3 Then
Sayı = "üç"
ElseIf gun = 4 Then
Sayı = "dört"
ElseIf gun = 5 Then
Sayı = "beş"
ElseIf gun = 6 Then
Sayı = "altı"
ElseIf gun = 7 Then
Sayı = "yedi"
ElseIf gun = 8 Then
Sayı = "sekiz"
ElseIf gun = 9 Then
Sayı = "dokuz"
ElseIf gun = 10 Then
Sayı = "on"
Else
Sayı = ""
End If
End Function
 
Katılım
7 Ağustos 2007
Mesajlar
328
Excel Vers. ve Dili
excell 2003 - 2007
Halit bey teşekkürler. Konu çözüme kavuşmuştur. Kullanacak arkadaşlar için dosyayı ek olarak sunuyorum. Sağlık Kuruluşunu makroda XXX olarak yazdım kullanacak arkadaşlar oradan değiştirebilir.
 

Ekli dosyalar

Üst