Üstadlar forumdan albildiğim bilgiler saysende bu kadar yapabildim bundan sonrası için yardımlarınızı bekliyorum.gerkli açıklamayı not deftrine ilave ettim.
Hepinize şimdiden teşekkürler:yardim:
Şayet sizi sıkmayacaksm konuları tek tek ele almak isterim;
Ben tamire tutulan ve tamirden çıkan vagonları kayıt altına almak,takip etmek istiyorum.
vagon numaralarımızın bir satndartı ve konturölü var,şöyleki;
Örnek: 81756650031-7 bu vag.numarasının altına treye kadar 2-1-2-1-2-1şeklinde 8'den bşlayıp 1'e kadar altına yazılır.8'in altına 2 gelir ve 8x2=16 altına yazılır.Diğer rakamlar içinde aynısı geçerli.
8 1 7 5 6 6 5 0 0 3 1
2 1 2 1 2 1 2 1 2 1 2
------------------------------------------------
16- 1-14-5 -12-6-10-0-0-3-2=33 Bu çıkan rakamlar basamak değerine bakılmaksızın tek tek toplanır ve çıkan sonuçu(33)onluk bir üst sayıya yani 40 yapmak için 7 lazım bizim vagon numarasındaki - sonraki 7 (42 ise50'ye-56 ise 60 vb.gibi).Bu bizim o vagon için geçerli konturol numarası.
Şİmdi yardım isteğim;
Formus TAMİRGİRİŞİ'n deki TXVAGONNO'ya 81756650031-7 yerine yanlışlıkla
81756660031-7 yazdığımda (5 yerine 6)vagon numarası yanlış diye uyarmasını istiyorum.
Baştada söyledim VBA konusunda hiç bilgim olmadığı halde buralarakadar getirdim formun çok yararlı olduğuna inanıyorum ve yardım talebimi geri alıyorum.:???:
Kendi kendime kızdım ve yardım istemekten vaz geçmiştim.Makrolar konusunda hiçbir bilgim olmadığı halde form sayesinde bu kadar yapabildim.Formun çok yararlı ve faydalı olduğuna inannıyorum.
Hazırladığınız formülden anladımki kendimi ifade edmememişim.
Benim tam olarak istediğim Makro ile Forum TAMİR GİRİŞİ'indeki TXVAGONNO'ya Private Sub TXVAGONNO_Change()
?
End Sub
Buraya makro ile o belirtiğim formül üzerinden konturol yapmalı ve yanlış yazılan vago numarasında beni uyarmalı.
Kullanıcı Tanımlı Fonkdiyon ekte.
Sayın Evren bir yanlışlık var toplamı 33 eder çünkü sayıların toplamı değil rakamların toplamı olacak.
Function KontrolNo(VagonNo)
For i = 1 To 11
If i Mod 2 = 0 Then
birleştir = birleştir & Mid(VagonNo, i, 1)
Else
birleştir = birleştir & Mid(VagonNo, i, 1) * 2
End If
Next
For e = 1 To Len(birleştir)
Topla = Topla + Mid(birleştir, e, 1) * 1
Next
KontrolNo = 10 - Topla Mod 10
End Function
Yukardaki mesajdaki kodları Module1 yazıp,
Örneğin SEVKISLEMİ formunun SEVK ET düğmesinin kodlarının başına da aşağıdaki kodları yazarsanız.
Private Sub CommandButton1_Click()
If Len(TXSEVVAGNO) <> 13 Then
MsgBox "Vagon Numarasını Kontrol Ediniz"
TXSEVVAGNO.SetFocus
Exit Sub
End If
If Mid(TXSEVVAGNO, 12, 1) <> "-" Then
MsgBox "Vagon Numarasını Kontrol Ediniz"
TXSEVVAGNO.SetFocus
Exit Sub
End If
For i = 1 To 11
If Mid(TXSEVVAGNO, i, 1) >= 0 And Mid(TXSEVVAGNO, i, 1) <= 9 Then
Else
MsgBox "Vagon Numarasını Kontrol Ediniz"
TXSEVVAGNO.SetFocus
Exit Sub
End If
Next
If Not IsNumeric(Right(TXSEVVAGNO, 1)) Then
MsgBox "Vagon Numarasını Kontrol Ediniz"
TXSEVVAGNO.SetFocus
Exit Sub
End If
If KontrolNo(TXSEVVAGNO) - Right(TXSEVVAGNO, 1) <> 0 Then
MsgBox "Vagon Numarasını Kontrol Ediniz"
TXSEVVAGNO.SetFocus
Exit Sub
End If
........Diğer kodlarınız
Eğer TextBox'ın içinde yazarken kontrol etmek istiyorsanız. Düğmenin koduna aşağıdaki kodları yazın.
Private Sub TXSEVVAGNO_Change()
If Len(TXSEVVAGNO) = 1 Then
If Right(TXSEVVAGNO, 1) >= 0 And Right(TXSEVVAGNO, 1) < 10 Then
Else
MsgBox "Rakkam giriniz."
TXSEVVAGNO.Value = ""
End If
ElseIf Len(TXSEVVAGNO) > 1 And Len(TXSEVVAGNO) < 12 Then
If Right(TXSEVVAGNO, 1) >= 0 And Right(TXSEVVAGNO, 1) < 10 Then
Else
MsgBox "Rakkam giriniz."
TXSEVVAGNO.Value = Mid(TXSEVVAGNO, 1, Len(TXSEVVAGNO) - 1)
End If
ElseIf Len(TXSEVVAGNO) = 12 Then
If Right(TXSEVVAGNO, 1) <> "-" Then
MsgBox "'-' giriniz."
TXSEVVAGNO.Value = Mid(TXSEVVAGNO, 1, Len(TXSEVVAGNO) - 1)
End If
ElseIf Len(TXSEVVAGNO) = 13 Then
If Right(TXSEVVAGNO, 1) >= 0 And Right(TXSEVVAGNO, 1) < 10 Then
Else
MsgBox "Rakkam giriniz."
TXSEVVAGNO.Value = Mid(TXSEVVAGNO, 1, Len(TXSEVVAGNO) - 1)
End If
If KontrolNo(TXSEVVAGNO) - Right(TXSEVVAGNO, 1) <> 0 Then
MsgBox "Vagon Numarasını Kontrol Ediniz"
TXSEVVAGNO.Value = Mid(TXSEVVAGNO, 1, Len(TXSEVVAGNO) - 1)
End If
ElseIf Len(TXSEVVAGNO) > 13 Then
MsgBox "Fazla Rakkam girdiniz."
TXSEVVAGNO.Value = Mid(TXSEVVAGNO, 1, Len(TXSEVVAGNO) - 1)
Sayın meslektaşım:
=Daha önce kayda girdiğim tamirlik vagonu sonra bul tuşu ile bulup aynı satırdaki I-J-K sütunlarına tarih-2077 ve sicil no gibi bilgileri kaydetsin.
=Tamirlik vagonu kayda girdiğimde A1'e de yzıyor.
=Girilen tüm vagonlar excel sayfasından silinmesin.makro girişleri şifreli olsun.
=Çıkış butonuna tıkladığımda veriler kaydedilip çıksın.
Çalışmamı tekrar gönderiyorum.
Şimdiden teşekkür ederim.Hayırlı çalışmalar
Sizlere daha iyi bir deneyim sunabilmek icin sitemizde çerez konumlandırmaktayız, web sitemizi kullanmaya devam ettiğinizde çerezler ile toplanan kişisel verileriniz Veri Politikamız / Bilgilendirmelerimizde belirtilen amaçlar ve yöntemlerle mevzuatına uygun olarak kullanılacaktır.