Excel Vba Forum - Excelce.Net
SORU ve CEVAPLAR (Yazılabilir) => Microsoft Excel, Vba, Makro, Formül vb. Soruları => Konuyu başlatan: serkoloji - 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
-
Merhaba,
Hoş geldiniz.
Aşağıdaki kodu bir ClassModüle yazın:
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:
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
-
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 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 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]
-
Bülent Bey bir şey daha sormak istiyorum.
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.