• DİKKAT

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

Texbox`a girilen sayilari sabit sayi ile carpma

Katılım
4 Ocak 2012
Mesajlar
70
Excel Vers. ve Dili
2003 turkce
textboxun icinde bir sayi girisi olacak ve bu girilen her bir rakam farkli farkli sayilar ile carpilacak ve en son toplanacak.
ornek: 528 diye bir textboxa sayi girdik . sabit sayi *(4,6,3)
5 harfini 4 ile
2 harfini 6 ile
8 harfini 3 ile ayri ayri carpacam otomatik olarak.

sonra cikan degerleri toplama islemi yapilacak,
5x4=20
2x6=12
8x3=24
toplam=20+12+24=56
bu sekilde bir makro hazirlanabilirmi? char karakterleri kullanarak??
 
Merhaba,

Girilen değer 3 basamak mı olacak. Farklı olursa ne olacak. Soruyu açarmısınız.
 
selam hocam, girilen degerler maximum 10 basamakli olacak.
eger 6 hane yazilmis ise textboxa, geri kalan 4 hane 0 degeri alabilir carpim icin.
bu degerler icinde sayilar ve harflerde olabilir.
mantigini anlarsam geri kalani ben yapabilirim diye dusunmustum.
 
10 haneden geri kalan 7 hane sıfırla çarpılacak demek istediniz sanırım. Çünkü verdiğiniz çarpım sayısı 3 haneli.

Ayrıca metinle karışık veride mi olacak. Bu şekilde olursa toplamı nasıl sonuçlandırmayı düşünüyorsunuz.
 
ilk etapta sadece sayilarla carpim olmasi yeterli hocam.
ilk 3 hane girdim ornek basit olsun istedim, geriye kalan haneler sifirla capilmasada olur, yada textboxtaki degerleri sifir olarak algilasada olur.
cunku yapmak istedigim, 4,6,3 rakami hep sabit kalacak, ilk 3 haneden sonra yine 4,6,3 ile carpilacak, hic 0 ile carpilmaycak, textbox degeri yok ise otomatik char degeri 0 olarak algilaycak ve carpim sonucu 0 olacak.
 
Bu şekilde deneyin.

Kod:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 
    Dim j As Integer, k As Integer, Toplam As Double
    Dim Dz(1 To 3)  As Integer
    
    Dz(1) = 4
    Dz(2) = 6
    Dz(3) = 3
    
    With TextBox1
        For j = 1 To Len(.Text)
            k = k + 1
            If k > 3 Then k = 1
            Toplam = Toplam + (Val(Mid(.Text, j, 1)) * Dz(k))
        Next j
        .Text = Toplam
    End With
    
End Sub
.
 
Bu şekilde deneyin.

Kod:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 
    Dim j As Integer, k As Integer, Toplam As Double
    Dim Dz(1 To 3)  As Integer
    
    Dz(1) = 4
    Dz(2) = 6
    Dz(3) = 3
    
    With TextBox1
        For j = 1 To Len(.Text)
            k = k + 1
            If k > 3 Then k = 1
            Toplam = Toplam + (Val(Mid(.Text, j, 1)) * Dz(k))
        Next j
        .Text = Toplam
    End With
    
End Sub
.

usta cok sagol, guzel olmus. buna harfleri nasil ekliyebilirim??
a harfinden z ye ingilizce klavye olacak sekilde, a =10
b=11, c=12 seklinde bir dizi ile sayilarin toplami nasil yapabiliriz???
 
Merhaba,

Sadece harf olan değerleri toplamak istiyorsanız ( ki soru çok açık değil) aşağıdaki kodları kullanabilirsiniz.

Ya da kodları kendinize göre uyarlayınız.

Kod:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    
    Dim i   As Integer, _
        Deg As Integer, _
        Top As Long, _
        Hrf As String
    
    Top = 0
    For i = 1 To Len(Trim(TextBox1.Value))
        Hrf = UCase(Mid(TextBox1.Value, i, 1))
        If IsNumeric(Hrf) = False Then
            Deg = Asc(Hrf) - 55
            Top = Top + Deg
        End If
    Next i
    
    TextBox1.Value = Top
    
End Sub
 
Soru bıraz cok karısık hocam. Ben en ıyıısı sunu sorayım.
Bır textboxa gırılen toplam 10 adet rakam veya harfı
10 ayrı kucuk textboxa ayırabılırmıyım?
 
Soru bıraz cok karısık hocam. Ben en ıyıısı sunu sorayım.
Bır textboxa gırılen toplam 10 adet rakam veya harfı
10 ayrı kucuk textboxa ayırabılırmıyım?

harflere rakam atayıp toplamaktı sorunuz şimdi bambaşka birşey diyorsunuz. Hadi buna da yanıt verdik oldu ya da olmadı demeden arkasından başka bir soru (önceki soruyla ilgisi olmayan) gelecek diye düşünüyorum.

Susma hakkını kullanıyorum.
 
yok hocam, yanlis anlasilmasin. soru gercekten cok karisik. o yuzden forrmulle yaptim, sadece istedigim, textboxa girilen degeri, ki bu sayi da olabilir, rakamda. girilen degeri bana 10 adet textboa bolsun.
onceki sorumla ayni konu, ama o biraz daha karisik olacak anlatmak. o yuzden sizin degerli zamaninizi almak istemem, yanlis da anlamayin lutfen. verdiginiz cevaplar icin de tesekkur ederim.
 
Neden bu tür bir uygulama istediğinizi sakıncası yoksa açıklarmısınız.
 
hocam mesaj olarak yolladim size. umarim yanlis anlasilma olmaz. cunku bu forum icine kalici olacam ilerisi icinde... herkese iyi calismalar.
 
biraz mantigi anlayinca yapilabiliyormus. yardimlariniz icin tesekkur ederim...

textbox1 icinde yazilan maximum 10 harf veya sayiyi textbox2 den textbox11 e kadar ayirip aktaran makro. umarim ilerde bazi arkadasin isine yarar...
 

Ekli dosyalar

Merhaba,

Mantığını kavradığınıza sevindim. Bu çözüm de hem döngü, hemde çıkışı kontrol mantığını anlamanız için.

Kod:
Private Sub TextBox11_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    
    Dim i As Integer
    
    'Uzunluk 10 karakter değilse çıkış gerçekleşmesin
    If Not Len(TextBox11.Value) = 10 Then
        Cancel = True
        Exit Sub
    End If
    For i = 1 To 10
        Controls("Textbox" & i) = Mid(TextBox11.Value, i, 1)
    Next i
    
End Sub
 

Ekli dosyalar

Merhaba,

Mantığını kavradığınıza sevindim. Bu çözüm de hem döngü, hemde çıkışı kontrol mantığını anlamanız için.

Kod:
Private Sub TextBox11_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    
    Dim i As Integer
    
    'Uzunluk 10 karakter değilse çıkış gerçekleşmesin
    If Not Len(TextBox11.Value) = 10 Then
        Cancel = True
        Exit Sub
    End If
    For i = 1 To 10
        Controls("Textbox" & i) = Mid(TextBox11.Value, i, 1)
    Next i
    
End Sub

gercekten cok tesekkur ederim usta. dongu olmasi guzel oldu.
 
Geri
Üst