Textboxların hepsi girilmeden sayfaya eklenmesin, textbox-hücre tarih format

Katılım
18 Ağustos 2005
Mesajlar
85
Excel Vers. ve Dili
EXCEL 2003
Altın Üyelik Bitiş Tarihi
28.01.2022
1-arkadaşlar textbox ları boş bıraktığımda msgbox ile uyarı alıyorum, EKLE butonunu tıkladığımda hangisinin boş olduğunu söylüyor ama yine de sayfaya ekliyor, yani 3 textbox dan biri bile eksik olsa (işlem sonunda) sayfaya eklemesin,
Not: textbox boş geçmesini denedim ama ben işlemin sonunda söylesin istiyorum
*****************************************
Private Sub ekle_Click()
'uyarı
If fatura = Empty Then
MsgBox "fatura Boş !", vbCritical: fatura.SetFocus
ElseIf tarih = Empty Then
MsgBox "tarih Boş !", vbCritical: tarih.SetFocus
ElseIf tutar = Empty Then
MsgBox "tutar Boş !", vbCritical: tutar.SetFocus
End If
fatura = ""
tarih = ""
tutar = ""
fatura.SetFocus
'veri girisi
If Range("A8") = "" Then
Range("A8").Select
ActiveCell = 1
ActiveCell.Offset(0, 1).Value = fatura.Value
ActiveCell.Offset(0, 3).Value = tarih.Value
ActiveCell.Offset(0, 5).Value = tutar.Value
'sıra no verme
Else
[A65536].End(xlUp).Offset(1, 0).Select
ActiveCell = ActiveCell.Offset(-1, 0) + 1
ActiveCell.Offset(0, 1).Value = fatura.Value
ActiveCell.Offset(0, 3).Value = tarih.Value
ActiveCell.Offset(0, 5).Value = tutar.Value
End If
End Sub
*************************************

2-textbox da tarih formatını aşağıdaki gibi kullanıyorum, bu textbox a sadece rakam ve
8 hane girilsin istiyorum kodu nereye yazacağımı bulamadım
Not: aslında 0112008 girdiğimde sayfada 01/12/2008 görünsün istiyorum, hücre kısmından denedim olmadı
************************************
If tarih.Tag = "1" = True Then Exit Sub
If Len(tarih) = 2 Then
If InStr(tarih, "/") = 0 Then tarih = tarih & "/"
ElseIf Len(tarih) = 5 Then
If Len(tarih) - Len(Application.Substitute(tarih, "/", "")) < 2 Then
tarih = tarih & "/"
End If
End If
**********************************

3-çok oldu biliyorum ama listbox da ytl yi nasıl göstereceğim
ListBox1.List(s, 3) = Cells(sat, "f") satırında ben textbox a 2350 giriyorum hücre onu 2.35YTL çeviriyor ancak list boxda 2350 görünüyor

******************************************
Private Sub TextBox3_Change()
Dim sat, s As Integer
Dim deg1, deg2 As String
With ListBox1
.Clear
.ColumnCount = 4
.ColumnWidths = "50,80,80,80"
End With
For sat = 8 To Cells(65536, "b").End(xlUp).Row
deg1 = UCase(Replace(Replace(Cells(sat, "b"), "ı", "I"), "i", "İ"))
deg2 = UCase(Replace(Replace(TextBox3, "ı", "I"), "i", "İ"))
If deg1 Like "*" & deg2 & "*" Then
ListBox1.AddItem
ListBox1.List(s, 0) = Cells(sat, "a")
ListBox1.List(s, 1) = Cells(sat, "b")
ListBox1.List(s, 2) = Cells(sat, "d")
ListBox1.List(s, 3) = Cells(sat, "f")
s = s + 1
End If: Next
End Sub
*******************************************************
Aslında daha çook sorum var ama tırmalıyorum işte, keşke şu silinen dosyalar güncellene bilse şimdiden Teşekkür ediyorum,
Kolay gelsin,
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
1.Sorunuz için, kodunuzu şu şekilde revize ediniz ...

Kod:
Private Sub ekle_Click()
'uyarı
If fatura = Empty Then
    MsgBox "fatura Boş !", vbCritical: fatura.SetFocus[COLOR=red]: Exit Sub
[/COLOR]ElseIf tarih = Empty Then
    MsgBox "tarih Boş !", vbCritical: tarih.SetFocus[COLOR=red]: Exit Sub
[/COLOR]ElseIf tutar = Empty Then
    MsgBox "tutar Boş !", vbCritical: tutar.SetFocus[COLOR=red]: Exit Sub
[/COLOR]End If
'...
'diğer satırlar
'...
End Sub
2.Sorunuz için; Textbox'ın KeyPress olay kodlarını şu şekilde düzenleyiniz. Sadece sayı girişi ve maksimum 8 adet rakam girebilirsiniz.

Kod:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii < 48 Or KeyAscii > 57 Then
            KeyAscii = 0
    Else
        If Len(TextBox1) > 8 Then
            KeyAscii = 0
        End If
    End If
End Sub
3. Sorunuzu, anlamadım :) ....
 
Katılım
18 Ağustos 2005
Mesajlar
85
Excel Vers. ve Dili
EXCEL 2003
Altın Üyelik Bitiş Tarihi
28.01.2022
Sn: Ferhat Pazarçevirdi;
Cevaplarınız için çok teşekkür ederim çok makbule geçtiler, 3. sorum dediğiniz gibi anlaşılır olmamış o sorunu bir şekilde çözdüm sayılır şimdi list box da başka sorunlarım var
******************************
http://www.excel.web.tr/../member.php?u=23989Private Sub CommandButton2_Click()
Dim sat As Integer
'*****listbox seçili değilse uyar
If ListBox1.ListIndex < 0 Then
MsgBox "Önce listeden fatura numarası seçiniz", vbInformation
Exit Sub: End If
'*****değişecek verileri döngü ile kontrol et
For sat = 2 To Cells(65536, "b").End(xlUp).Row
If Cells(sat, "a") Like ListBox1.Column(0) Then
Cells(sat, "b") = TextBox1.Value
Cells(sat, "c") = TextBox2.Value
Cells(sat, "f") = TextBox4.Value

End If: Next
'değişim sonu textleri temizle
TextBox1 = Empty: TextBox2 = Empty: TextBox4 = Empty
'***** listboxu yenile
TextBox3 = ".": TextBox3 = ""
End Sub
******************************
koyu ile yazılan satırlarda bir sorun var textbox4 e 4,50 gibi ondalıklı bir rakam giriyorum listbox üzerinde 4,40 olarak sorunsuz bir şekilde görüyorum ancak sayfa üzerinde "metin olarak saklanan sayı" mesajını alıyorum
(o hücre de hücre biçimlendir \para birimi sayesinde ytl olarak yazdırıyorum)
.value
ile bu sorunu diğer userformlarda çözmüştüm ancak bunda olmadı
"ActiveCell.Offset(0, 1).Value = fatura.Value" gibi..
Tekrar Teşekkürler,
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Bu tür durumlarda, yani TextBox'tan hücreye sayı yazdıracağınız zaman, şu adımları izlemelisiniz.

1. TextBox'ta yazılı olan şey bir sayı mı ?
2. Eğer sayıysa; hücreye bu değeri yazmak için, değer dönüşüm aracını kullan.
3. eğer sayı değilse, bu durumda ne yapılacağına siz karar vereceksiniz.

Ben TextBox1 için örnekleyeyim, siz de diğer Textbox'ları sayfaya yazdırırken aynı mantığı uygulayın.

Kod:
[COLOR=green]'TextBox1'e yazılan şey, bir sayı mı ?[/COLOR]
If IsNumeric(TextBox1) Then
[COLOR=green]    'Eğer sayı ise[/COLOR]
    Cells(sat, "b") = CDbl(TextBox1)
[COLOR=green]    'CDbl fonksiyonu, TextBox içinde string türde tutulan değeri,
    'Double (ondalıklı) bir nümerik değer döndürür[/COLOR]
Else
[COLOR=green]    'eğer sayı değilse
    'ki yanlışlıkla sayı yerine harfe bamış olabilirsiniz.
    'O zaman ne yapılması gerekiyorsa buraya yazın.[/COLOR]
End If
 
Üst