[Yardım]  MsgBoxdan sonra textbox geri dönülmüyor, odaklanma sorunu

Mesaj Kutusu. Programcıların olmazsa olmazlarından.

MsgBoxdan sonra textbox geri dönülmüyor, odaklanma sorunu

İleti#1)  onurunler » 31 Mar 2020 13:02

Öncelikle hepinize iyi günler

Excel VBA daha yeniyim, formda konuyu araştırdım fakat bir çözüme ulaşamadım, yardımlarınız için şimdiden teşekkür ederim.

Oluşturduğum userformda textboxa veri girişi sırasında exit ya da BeforeUpdate ve KeyPress de msgboxdan sonra cursor(imleç) kayboluyor, textbox veri girişi olmuyor.Fakat KeyPress çalışmaya devam ediyor harf yazınca msgbox çalıştırıyor rakam yazınca hiç bir işlem yapmıyor.Msgboxtan sonra setfocus çalışmıyor.

Birde Change olayında bir defaya mahsus olmak üzere numlock kapanıyor elle açıyorum, elle açtıktan sonra userformu tekrar çalıştırana kadar numlock kapanmıyor.

Kod: Tümünü seç

Private Sub TextBox_evrak_tarih_Enter()
If TextBox_evrak_tarih = "" Then
TextBox_evrak_tarih = Format(Date, "DD""/""MM""/""YYYY")
End If
End Sub

Private Sub TextBox_evrak_tarih_Change()

If Len(TextBox_evrak_tarih) > 10 Then
SendKeys "{Backspace}"
Exit Sub
End If
Set nesne = CreateObject("VBScript.Regexp")
Select Case Len(TextBox_evrak_tarih)
Case 1: nesne.Pattern = "^[0-3]"
Case 2: nesne.Pattern = "^(([01][1-9])|([1][0-9])|([2][0-9])|(3[0-1]))"
Case 4: nesne.Pattern = "(/[0-1])"
Case 5: nesne.Pattern = "(([0][1-9]|[1][0-2]))"
Case 9: nesne.Pattern = "(/20[0-9])"
Case 10: nesne.Pattern = "([0-9])"
End Select
nesne.Global = True
If nesne.Test(TextBox_evrak_tarih.Value) = False Then
SendKeys "{Backspace}"
Exit Sub
End If
If Len(TextBox_evrak_tarih) = 2 Then TextBox_evrak_tarih = TextBox_evrak_tarih & "/"
If Len(TextBox_evrak_tarih) = 5 Then TextBox_evrak_tarih = TextBox_evrak_tarih & "/20"
Set nesne = Nothing


On Error Resume Next
Dim edate As Integer
edate = Weekday(TextBox_evrak_tarih.Text)
If Len(TextBox_evrak_tarih) = 10 Then
    If edate = 0 Then
        MsgBox "Lütfen Geçerli Bir Tarih Giriniz.", vbCritical, "2559 VERİ GİRİŞ EKRANI "
        Cancel = True
        TextBox_evrak_tarih = Empty
        TextBox_msgbox.SetFocus
        TextBox_evrak_tarih.SetFocus
        TextBox_evrak_tarih = Empty
        Exit Sub
     End If
End If


End Sub

Private Sub TextBox_evrak_tarih_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

If TextBox_evrak_tarih <> "" Then
    If Len(TextBox_evrak_tarih) < 10 Then
        If MsgBox("Tarih Eksik Girildi!", vbRetryCancel + vbExclamation, "2559 VERİ GİRİŞ EKRANI ") = vbRetry Then
            Cancel = True
            TextBox_evrak_tarih.SetFocus
            TextBox_evrak_tarih = ""
            Exit Sub
        Else
            Cancel = False
        End If
    End If
End If

End Sub


Private Sub TextBox_evrak_tarih_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
    Case Asc("0") To Asc("9")
    Case Else
    KeyAscii = 0
    MsgBox "Sadece rakam girebilirsiniz.", vbExclamation
    End Select
    TextBox_evrak_tarih.MaxLength = 10
    Exit Sub
   
End Sub


Kullanıcı avatarı
onurunler
 
Kayıt: 31 Mar 2020 10:56
Meslek: memur
Yaş: 30
İleti: 5
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Bilecik

Cevap: MsgBoxdan sonra textbox geri dönülmüyor, odaklanma s

İleti#2)  Ali ÖZ » 31 Mar 2020 20:55

TextBox_evrak_tarih.setfocus
Allah bize yeter, O ne güzel vekildir.
حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Kullanıcı avatarı
Ali ÖZ
Forum Moderatörü
 
Adı Soyadı:Ali ÖZ
Kayıt: 17 Oca 2013 10:16
Konum: SAKARYA
Meslek: Yazılım
Yaş: 38
İleti: 10104
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Adapazarı/SAKARYA

Cevap: MsgBoxdan sonra textbox geri dönülmüyor, odaklanma s

İleti#3)  erseldemirel2 » 01 Nis 2020 00:34

Module içine gerekli yere numlock aç emri verilebilir.


Kod: Tümünü seç
SendKeys "{NUMLOCK}"
www.erseldemirel.com.tr
Kullanıcı avatarı
erseldemirel2
Site Dostu
 
Kayıt: 31 Oca 2019 12:51
Meslek: Mühendis
Yaş: 36
İleti: 716
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara / Çankaya

Cevap: MsgBoxdan sonra textbox geri dönülmüyor, odaklanma s

İleti#4)  onurunler » 01 Nis 2020 07:38

Verdiğiniz cevaplar için teşekkür ederim.Fakat
Kod: Tümünü seç
TextBox_evrak_tarih.setfocus
kodu exit-BeforeUpdate ve KeyPress de msgbox'tan sonra çalışmıyor. Popup denedim ama ondan da sonuç alamadım.
Kod: Tümünü seç
SendKeys "{Numlock}"
kodu da numlock açıksa kapalı hale getiriyor benim istediğim numlock kapandığında tekrar açması.
Tekrar teşekkürler.
Kullanıcı avatarı
onurunler
 
Kayıt: 31 Mar 2020 10:56
Meslek: memur
Yaş: 30
İleti: 5
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Bilecik

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Cevap: MsgBoxdan sonra textbox geri dönülmüyor, odaklanma s

İleti#5)  erseldemirel2 » 01 Nis 2020 21:13

Dosyanızı ekleyin birde öyle bakılsın burda
www.erseldemirel.com.tr
Kullanıcı avatarı
erseldemirel2
Site Dostu
 
Kayıt: 31 Oca 2019 12:51
Meslek: Mühendis
Yaş: 36
İleti: 716
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara / Çankaya

Cevap: MsgBoxdan sonra textbox geri dönülmüyor, odaklanma s

İleti#6)  onurunler » 08 Nis 2020 11:41

Örnek dosyayı ekledim.İstediğim msgboxtan sonra odağın (cursor) textboxa geri dönmesi.
Kod: Tümünü seç
TextBox_evrak_tarih_Change()
kodunda setfocus koduyla başka bir textboxa yönlendirip tekrar geri getirdim fakat
Kod: Tümünü seç
TextBox_evrak_tarih_BeforeUpdate
ve
Kod: Tümünü seç
TextBox_evrak_tarih_KeyPress
setfocus çalışmıyor. Exit olayınıda denedim ondada çalışmadı. Popup denedim oda olmadı.
İlgilenen herkese teşekkür ederim.İyi günler iyi çalışmalar.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
onurunler
 
Kayıt: 31 Mar 2020 10:56
Meslek: memur
Yaş: 30
İleti: 5
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Bilecik

REKLAM
ETA - Excel Konsolide Raporlama
ETA Excel Personel Entegre Raporu

Cevap: MsgBoxdan sonra textbox geri dönülmüyor, odaklanma s

İleti#7)  Tarkan VURAL » 09 Nis 2020 10:27

Merhaba,
İşleyişi anlatır mısınız ? Mesaj kutusu ne zaman geliyor ? Mouse kullanmıyor musunuz ? Sendkeys komutlarını hangi amaçla kullanma ihtiyacı duyuyorsunuz ? Akışı tam manasıyla bilebilirsek, yapmaya çalıştığınızı değil, yapmanız gerekeni daha farklı yöntemlerle çözebiliriz. Kolay gelsin.
Resim
www.tarkanvural.com.tr

İnnâ lillâhi ve innâ ileyhi raciûn
Şüphesiz ki; biz Allah’a âidiz ve vakti geldiğinde O’na döndürüleceğiz.

HasbunAllâhu ve nimel vekîl
Bize Allah yeter. O ne güzel vekildir.


ExcelVBA.NET' e katkıda bulunmak ister misiniz ?
Kullanıcı avatarı
Tarkan VURAL
Yönetim Kurulu
 
Adı Soyadı:Tarkan VURAL
Kayıt: 14 Haz 2008 18:27
Konum: @tarkanvural73
Meslek: LUU, Database Expert, Senior Software Specialist, Developer
Yaş: 46
İleti: 27301
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul - Beylikdüzü

Cevap: Cevap: MsgBoxdan sonra textbox geri dönülmüyor, odak

İleti#8)  onurunler » 11 Nis 2020 13:03

Tarkan VURAL yazdı:Merhaba,
İşleyişi anlatır mısınız ? Mesaj kutusu ne zaman geliyor ? Mouse kullanmıyor musunuz ? Sendkeys komutlarını hangi amaçla kullanma ihtiyacı duyuyorsunuz ? Akışı tam manasıyla bilebilirsek, yapmaya çalıştığınızı değil, yapmanız gerekeni daha farklı yöntemlerle çözebiliriz. Kolay gelsin.



Merhaba Tarkan Bey,
Öncelikle konuyla ilgilendiğiniz için teşekkür ederim.Yapmak istediğim bilgiler girilerek otomatik evrak oluşturmak.Aynı bilgilerle 2 adet evrak oluşturuluyor.Bunun için bir çok satır var fakat benim sıkıntım tarih textboxında olduğu için ben örnekte tarih kısmını koydum.

Sorunum tarih textboxına veri girilirken belirli hata mesajları vermesi ve hata mesajından sonra imleçin(Cursor)aktif textboxa geri dönmesi .Bu hata mesajları Tarih Eksik Girildi, Sadece Rakam Girilebilir, textbox çıkışında da tarihi kontrol edip geçerli bir tarih olması( Örneğin 29/02/2019 'u kabul etmeyecek) ve tam bir tarih formatı (11/04/20 gibi eksik rakam girildiğinde hata verecek) girilmesi.

Textboxa tarih girildiğinde geçerli bir tarih olup olmadığını kontrol edebiliyorum.Bununla ilgili hata mesajı verdirip başka bir textboxtan aktif textboxa geri dönüyorum.Bu yoluda msgboxtan sonra imleç aktif olmadığı, veri giremediğim için yaptım.

Diğer hata mesajları için msgboxtan sonra aktif textboxa dönse bile textboxa tarih girilemiyor ve imleç kayboluyor.Bununla birlikte rakam harici bir değer ya da tarih formatı eksik olduğunda hata mesajları vermeye devam edebiliyor.

İsteğim msgboxtan sonra aktif textboxa veri girmeye devam edebilmek.

İlgilenen herkese teşekkür ederim.İyi günler iyi çalışmalar.
Kullanıcı avatarı
onurunler
 
Kayıt: 31 Mar 2020 10:56
Meslek: memur
Yaş: 30
İleti: 5
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Bilecik

Cevap: MsgBoxdan sonra textbox geri dönülmüyor, odaklanma s

İleti#9)  Tarkan VURAL » 13 Nis 2020 09:04

Merhaba,
Ben olsam mesaj kutusu yerine bir Label üzerinde kullanıcılara uyarı yazmayı denerdim.

Kod: Tümünü seç
Private Sub TextBox_evrak_sayi_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox_evrak_sayi.Text) Then
TextBox_evrak_sayi.BackColor = vbWhite
Label1.Caption = vbNullString
Else
TextBox_evrak_sayi.SetFocus
End If
End Sub

Private Sub TextBox_evrak_sayi_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
TextBox_evrak_sayi.BackColor = vbWhite
If (KeyCode >= 48 And KeyCode <= 58) Or (KeyCode >= 95 And KeyCode <= 105) Then
Else
Label1.Caption = "Lütfen sadece sayı giriniz. "
TextBox_evrak_sayi.BackColor = vbRed
TextBox_evrak_sayi.SelStart = Len(TextBox_evrak_sayi.Text)
End If
End Sub
Resim
www.tarkanvural.com.tr

İnnâ lillâhi ve innâ ileyhi raciûn
Şüphesiz ki; biz Allah’a âidiz ve vakti geldiğinde O’na döndürüleceğiz.

HasbunAllâhu ve nimel vekîl
Bize Allah yeter. O ne güzel vekildir.


ExcelVBA.NET' e katkıda bulunmak ister misiniz ?
Kullanıcı avatarı
Tarkan VURAL
Yönetim Kurulu
 
Adı Soyadı:Tarkan VURAL
Kayıt: 14 Haz 2008 18:27
Konum: @tarkanvural73
Meslek: LUU, Database Expert, Senior Software Specialist, Developer
Yaş: 46
İleti: 27301
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul - Beylikdüzü

Cevap: Cevap: MsgBoxdan sonra textbox geri dönülmüyor, odak

İleti#10)  onurunler » 13 Nis 2020 11:15

Tarkan VURAL yazdı:Merhaba,
Ben olsam mesaj kutusu yerine bir Label üzerinde kullanıcılara uyarı yazmayı denerdim.

Kod: Tümünü seç
Private Sub TextBox_evrak_sayi_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox_evrak_sayi.Text) Then
TextBox_evrak_sayi.BackColor = vbWhite
Label1.Caption = vbNullString
Else
TextBox_evrak_sayi.SetFocus
End If
End Sub

Private Sub TextBox_evrak_sayi_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
TextBox_evrak_sayi.BackColor = vbWhite
If (KeyCode >= 48 And KeyCode <= 58) Or (KeyCode >= 95 And KeyCode <= 105) Then
Else
Label1.Caption = "Lütfen sadece sayı giriniz. "
TextBox_evrak_sayi.BackColor = vbRed
TextBox_evrak_sayi.SelStart = Len(TextBox_evrak_sayi.Text)
End If
End Sub



Tarkan bey İlginiz için teşekkür ederim.

Bu yolu deneyeceğim.İyi Günler iyi çalışmalar.
Kullanıcı avatarı
onurunler
 
Kayıt: 31 Mar 2020 10:56
Meslek: memur
Yaş: 30
İleti: 5
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Bilecik


Forum MsgBox

Online Kullanıcılar

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 1 misafir

Bumerang - Yazarkafe