Personel & Zimmet Takip Programı (KZT-v.5) foruma eklenmiştir. 
http://www.excelce.net/forum/index.php?topic=1676.0

Gönderen Konu: TEXTBOX'larda otomatik olarak noktayı virgül yapma  (Okunma sayısı 3529 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı serkoloji

  • Excelce Onbaşı
  • **
  • İleti: 4
  • Puan +0/-0
  • Cinsiyet: Bay
  • Excel'den Daha Fazlası!..
  • Ad Soyad: H.Serkan TEZER
  • Doğum Yılınız: 1977
  • İl / İlçe: Ankara Yenimahalle
  • Office Versiyonunuz: 2019 ve 2016
TEXTBOX'larda otomatik olarak noktayı virgül yapma
« : 03 Şubat 2021, 15:05:12 »
Merhaba arkadaşlar,
Kodlama konusunda oldukça acemiyim ve bir yerde takıldım, sizlere danışayım dedim.

Bir userbox oluşturdum ve bu userbox üzerinde 426 adet textbox var.
Bu textboxlardan "textbox154" ile "textbox426" arasındakilere girilen rakamlarda ondalık ayracı olarak nokta girildiği zaman otomatik olarak bu noktayı virgüle çevirsin istiyordum. Bunun için aşağıdaki kodu buldum ve bu kod doğru çalışıyor. Ancak bu kod sadece bir textbox için çalışıyor. Bütün textboxlar için bunu çoğaltmak epeyce satır kaplayacak. Textbox154 ile Textbox426 aralığındaki bütün textboxlar için kısa yoldan bu kodu nasıl çalıştırabilirim.

İlginize şimdiden teşekkür ederim.


Private Sub textbox154_keypress(ByVal keyascii As MSForms.ReturnInteger)
Select Case keyascii
Case 46
keyascii = 44
Case 44, 48 To 57
    Case Else
                keyascii = 0
    End Select
End Sub


Çevrimdışı Bülent Öztürk

  • Excelce.Net Yönetici
  • *
  • İleti: 1411
  • Puan +19/-0
  • Cinsiyet: Bay
  • Türkçe Konuşup Excelce Yazıyoruz...
    • Bülent Öztürk
  • Ad Soyad: Bülent Öztürk
  • Doğum Yılınız: 1976
  • İl / İlçe: İstanbul / Çorlu
  • İşletim Sisteminiz: Win.10
  • Mesleğiniz: Bilgi Teknolojileri
  • Office Versiyonunuz: 2016
Ynt: TEXTBOX'larda otomatik olarak noktayı virgül yapma
« Yanıtla #1 : 04 Şubat 2021, 18:11:59 »
Merhaba,

Hoş geldiniz.

Aşağıdaki kodu bir ClassModüle yazın:
Kod: [Seç]
Private WithEvents txtbox As MSForms.TextBox
Dim ctlr As Control
Public sum As Integer

Public Property Set TextBox(ByVal t As MSForms.TextBox)
    Set txtbox = t
End Property

Private Sub txtbox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim numara
numara = VBA.Right(txtbox.Name, 3)
If CDbl(numara) > 426 And CDbl(numara) < 154 Then
    Select Case KeyAscii
    Case 46
    KeyAscii = 44
    Case 44, 48 To 57
        Case Else
                    KeyAscii = 0
        End Select
End If
End Sub

Bu kodları da UserForm'a yazın:
Kod: [Seç]
Private myEventHandlers As Collection

Private Sub UserForm_Initialize()
    Dim txtbox As Class1

    Set myEventHandlers = New Collection

    Dim c As Control
    For Each c In Me.Controls
        If TypeName(c) = "TextBox" Then
            Set txtbox = New Class1

            Set txtbox.TextBox = c

            myEventHandlers.Add txtbox
        End If
    Next c
End Sub
(Ücretli program talepleriniz için iletişime geçebilirsiniz, excelvbprogram@gmail.com)

Çevrimdışı serkoloji

  • Excelce Onbaşı
  • **
  • İleti: 4
  • Puan +0/-0
  • Cinsiyet: Bay
  • Excel'den Daha Fazlası!..
  • Ad Soyad: H.Serkan TEZER
  • Doğum Yılınız: 1977
  • İl / İlçe: Ankara Yenimahalle
  • Office Versiyonunuz: 2019 ve 2016
Ynt: TEXTBOX'larda otomatik olarak noktayı virgül yapma
« Yanıtla #2 : 05 Şubat 2021, 20:12:28 »
Bülent bey,
Öncelikle ilginiz için teşekkür ederim.
Söylediğiniz gibi yapmama rağmen maalesef olmadı. Sonra kodu incelemeye başladım. Class'e girmem gereken bu
Kod: [Seç]
If CDbl(numara) > 426 And CDbl(numara) < 154 Then kodu 426'dan büyük ve 154'den küçük yazıldığını fark ettim. Bu kodu
Kod: [Seç]
If CDbl(numara) < 426 And CDbl(numara) > 154 Then şeklinde değiştirdim. Ancak yine de textboxlara nokta girdiğimde virgül yapmadı.

User form için oluşturduğunuz kodu çözecek kadar bilgi sahibi olmadığım için yorum yapamadım.[/code]
« Son Düzenleme: 05 Şubat 2021, 21:04:36 Gönderen: serkoloji »

Çevrimdışı serkoloji

  • Excelce Onbaşı
  • **
  • İleti: 4
  • Puan +0/-0
  • Cinsiyet: Bay
  • Excel'den Daha Fazlası!..
  • Ad Soyad: H.Serkan TEZER
  • Doğum Yılınız: 1977
  • İl / İlçe: Ankara Yenimahalle
  • Office Versiyonunuz: 2019 ve 2016
Ynt: TEXTBOX'larda otomatik olarak noktayı virgül yapma
« Yanıtla #3 : 05 Şubat 2021, 21:01:18 »
Bülent Bey bir şey daha sormak istiyorum.

Kod: [Seç]
Private Sub CommandButton20_Click()


If Textbox161.Value = "" Then
    MsgBox "oldu"
ElseIf Textbox154 > Textbox161.Value Then
    MsgBox "Değerleri küçükten büyüğe doğru sıralayınız."
End If
End Sub
bu Koda göre textbox154'e 9, textbox161'e 10 girince elseif seçeneğini gerçekleştiriyor. Ancak sırasıyla 9 ve 91 sayılarını girince hata vermiyor. Sorun nerededir acaba.
« Son Düzenleme: 05 Şubat 2021, 21:05:10 Gönderen: serkoloji »