Katılım
17 Mart 2022
Mesajlar
281
Excel Vers. ve Dili
2016/Türkçe
Altın Üyelik Bitiş Tarihi
22-03-2023
Merhaba,
Öncelikle Berat kandilinizi tebrik eder, hayırlı kandiller dilerim.

Bir proje ekranım var hemen hemen tamamladım hatta bitti diyebiliriz ufak bir detayım kaldı onu da bir türlü aşamadım. Bu nedenle bilgisi dahilinde olan üstatların değerli desteklerine ihtiyacım var.

Aşağıdaki kodlarda göreceğiniz üzere bir arama formu oluşturdum. Fakat arama datamda olmayan ID lerde Run-time error '1004': WorksheetFunction sınıfının Match özelliği alınamıyor hatası alıyorum. Bu hatayı almadan bir msgbox mesajı nasıl yazabilirim? Yani demem oki bu ürün ıd datada yok devam etmek istiyor musun diye soracak devam ettiğimde forma geri dönsün. "Run-time error '1004': WorksheetFunction sınıfının Match özelliği alınamıyor" bu hatayı aldığımda end dediğimde formdan ve dolayısı ile excelden çıkıyor. Debuk dediğim kod sayfasına yönlendiriyor vs..

Değerli desteklerinizi istirham eder, sağlıklı günler dilerim.

Orhan ÇOLAK
orh.colak37@gmail.com

Kodlar;

Private Sub CommandButton2_Click()
Application.Visible = True
Unload Me
End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

If KeyCode = 13 Then KeyCode = 0

End Sub

Private Sub TextBox1_Change()

If Len(TextBox1.Value) < 13 Then Exit Sub
Dim kayitsayisi, kacincikayit, satirsayisi As Long

'***Buradaki kodları revize ettim
If TextBox1.Value = Label12.Caption Then
kayitsayisi = TextBox9.Value
If TextBox10.Value = TextBox9.Value Then
kacincikayit = 1
satirsayisi = WorksheetFunction.Match(TextBox1.Value * 1, Sheets("Data").Range("A1:A1048576"), False)
Else
TextBox10.Value = TextBox10.Value + 1
kacincikayit = TextBox10.Value
satirsayisi = Label13.Caption * 1
Nerede = WorksheetFunction.Match(TextBox1.Value * 1, Sheets("Data").Range("A" & satirsayisi + 1 & ":A1048576"), False)
satirsayisi = satirsayisi + Nerede
End If

TextBox9.Value = kayitsayisi
TextBox10.Value = kacincikayit
Label13.Caption = satirsayisi

TextBox2.Value = Sheets("Data").Range("B" & satirsayisi).Value
TextBox3.Value = Sheets("Data").Range("C" & satirsayisi).Value
TextBox4.Value = Sheets("Data").Range("A" & satirsayisi).Value
TextBox5.Value = Sheets("Data").Range("D" & satirsayisi).Value
TextBox6.Value = Sheets("Data").Range("E" & satirsayisi).Value
TextBox7.Value = Sheets("Data").Range("F" & satirsayisi).Value
TextBox8.Value = Sheets("Data").Range("G" & satirsayisi).Value

Else
Label12.Caption = TextBox1.Value
kacincikayit = 1
kayitsayisi = WorksheetFunction.CountIf(Sheets("Data").Range("A:A"), TextBox1.Value)
satirsayisi = WorksheetFunction.Match(TextBox1.Value * 1, Sheets("Data").Range("A1:A1048576"), False)

TextBox9.Value = kayitsayisi
TextBox10.Value = kacincikayit
Label13.Caption = satirsayisi

TextBox2.Value = Sheets("Data").Range("B" & satirsayisi).Value
TextBox3.Value = Sheets("Data").Range("C" & satirsayisi).Value
TextBox4.Value = Sheets("Data").Range("A" & satirsayisi).Value
TextBox5.Value = Sheets("Data").Range("D" & satirsayisi).Value
TextBox6.Value = Sheets("Data").Range("E" & satirsayisi).Value
TextBox7.Value = Sheets("Data").Range("F" & satirsayisi).Value
TextBox8.Value = Sheets("Data").Range("G" & satirsayisi).Value


End If


TextBox1.Value = ""
TextBox1.SetFocus

End Sub

Private Sub CommandButton1_Click()
Application.Visible = True
End Sub
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Aşağıdaki gibi bir yapı kullanabilir siniz.

Kod:
If WorksheetFunction.CountIf(Sheets("Data").Range("A1:A1048576"), TextBox1.Value * 1) = 0 Then
    MsgBox "Veriyi Bulamadım"
    Exit Sub
Else
    'kodlarınız
End If
 
Katılım
17 Mart 2022
Mesajlar
281
Excel Vers. ve Dili
2016/Türkçe
Altın Üyelik Bitiş Tarihi
22-03-2023
Merhaba Ömer Bey,

Öncelikle desteğiniz için teşekkür ederim.
Verdiğiniz kod işimi gördü fakat scanner ile okutma yaptığım için aşağıdaki gibi kodların en üst kısmına bir kod yazdım;

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

If KeyCode = 13 Then KeyCode = 0

End Sub

Dolayısı ile enter tuşu bir nevi iptal oldu :) bunu yapmamın sebebi her okuttuğumda imlecin ürün ıd kısmında kalması idi. Akabinde ürün ıd kısmının silinerek sürekli okutmaya hazır olması için silinmesi yönünde TextBox1.Value = "" / TextBox1.SetFocus yazarak silinmesini de sağlamış oldum. Verdiğiniz kod ile manüel ürün ıd girip entere bastığımda mesajı veriyor ama okutulan ürün ıd TextBox1 de kalıyor otomatik silinmiyor. Scanner ile okuttuğumda yukardaki kod nedeni ile mesaj vermiyor ve hatada vermiyor bu durum güzel aslında ama ürün ıd kısmında kod silinmemiş vaziyette duruyor ve silmeden scanner ile okutma yapamıyorum. Kodların tamamını aşağıda paylaşıyorum;

Mümkün ise verdiğiniz kodu scanner ile okuttuğumda msj vererek ürün ıd kısmının yine silinmesini sağlayacak şekilde revize edebilir misiniz? Birde kodu tam olarak nereye yerleştirmem uygun olacaktır. Belkide doğru yere yerleştirmediğim için böyle bir durum söz konusu da olabilir. Tekrardan değerli desteklerinizi talep eder, iyi çalışmalar dilerim. Saygılarımla,

Not; Özetle scanner ile okutmayı gerçekleştirdim ürün ıd datada olmadığı için ürün ıd bulunamadı mesajını alarak entera basarak hızlı bir şekilde diğer farklı ıdlere scanner ile okutma yapmaya devam etmek istiyorum.

Private Sub CommandButton2_Click()
Application.Visible = True
Unload Me
End Sub
-------------------------------------------------------------
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

If KeyCode = 13 Then KeyCode = 0

End Sub
-------------------------------------------------------------
Private Sub TextBox1_Change()

If Len(TextBox1.Value) < 13 Then Exit Sub
Dim kayitsayisi, kacincikayit, satirsayisi As Long

'***Buradaki kodları revize ettim
If TextBox1.Value = Label12.Caption Then
kayitsayisi = TextBox9.Value
If TextBox10.Value = TextBox9.Value Then
kacincikayit = 1
satirsayisi = WorksheetFunction.Match(TextBox1.Value * 1, Sheets("Data").Range("A1:A1048576"), False)
Else
TextBox10.Value = TextBox10.Value + 1
kacincikayit = TextBox10.Value
satirsayisi = Label13.Caption * 1
Nerede = WorksheetFunction.Match(TextBox1.Value * 1, Sheets("Data").Range("A" & satirsayisi + 1 & ":A1048576"), False)
satirsayisi = satirsayisi + Nerede
End If

TextBox9.Value = kayitsayisi
TextBox10.Value = kacincikayit
Label13.Caption = satirsayisi

TextBox2.Value = Sheets("Data").Range("B" & satirsayisi).Value
TextBox3.Value = Sheets("Data").Range("C" & satirsayisi).Value
TextBox4.Value = Sheets("Data").Range("A" & satirsayisi).Value
TextBox5.Value = Sheets("Data").Range("D" & satirsayisi).Value
TextBox6.Value = Sheets("Data").Range("E" & satirsayisi).Value
TextBox7.Value = Sheets("Data").Range("F" & satirsayisi).Value
TextBox8.Value = Sheets("Data").Range("G" & satirsayisi).Value

Else
Label12.Caption = TextBox1.Value
kacincikayit = 1
kayitsayisi = WorksheetFunction.CountIf(Sheets("Data").Range("A:A"), TextBox1.Value)
satirsayisi = WorksheetFunction.Match(TextBox1.Value * 1, Sheets("Data").Range("A1:A1048576"), False)

TextBox9.Value = kayitsayisi
TextBox10.Value = kacincikayit
Label13.Caption = satirsayisi

TextBox2.Value = Sheets("Data").Range("B" & satirsayisi).Value
TextBox3.Value = Sheets("Data").Range("C" & satirsayisi).Value
TextBox4.Value = Sheets("Data").Range("A" & satirsayisi).Value
TextBox5.Value = Sheets("Data").Range("D" & satirsayisi).Value
TextBox6.Value = Sheets("Data").Range("E" & satirsayisi).Value
TextBox7.Value = Sheets("Data").Range("F" & satirsayisi).Value
TextBox8.Value = Sheets("Data").Range("G" & satirsayisi).Value


End If


TextBox1.Value = ""
TextBox1.SetFocus

End Sub
-------------------------------------------------------------------------------
Private Sub CommandButton1_Click()
Application.Visible = True
End Sub
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Aşağıdaki gibi deneyiniz. Açıklamalarınızı tam anlamadığım için tahmini olarak kodları başa ekledim ve bir kaç ilave yaptım.

Kod:
Private Sub TextBox1_Change()

    Dim kayitsayisi As Long, kacincikayit As Long, satirsayisi As Long

    If Len(TextBox1.Value) < 13 Then Exit Sub
    
    'ilave başladı***********************
    If WorksheetFunction.CountIf(Sheets("Data").Range("A1:A1048576"), TextBox1.Value * 1) = 0 Then
        MsgBox "Veriyi Bulamadım"
        TextBox1.Value = ""
        TextBox1.SetFocus
        Exit Sub
    End If
    'ilave bitti***********************
    
    '***Buradaki kodları revize ettim
    If TextBox1.Value = Label12.Caption Then
        kayitsayisi = TextBox9.Value
        If TextBox10.Value = TextBox9.Value Then
            kacincikayit = 1
            satirsayisi = WorksheetFunction.Match(TextBox1.Value * 1, Sheets("Data").Range("A1:A1048576"), False)
        Else
            TextBox10.Value = TextBox10.Value + 1
            kacincikayit = TextBox10.Value
            satirsayisi = Label13.Caption * 1
            Nerede = WorksheetFunction.Match(TextBox1.Value * 1, Sheets("Data").Range("A" & satirsayisi + 1 & ":A1048576"), False)
            satirsayisi = satirsayisi + Nerede
        End If
    
        TextBox9.Value = kayitsayisi
        TextBox10.Value = kacincikayit
        Label13.Caption = satirsayisi
        
        TextBox2.Value = Sheets("Data").Range("B" & satirsayisi).Value
        TextBox3.Value = Sheets("Data").Range("C" & satirsayisi).Value
        TextBox4.Value = Sheets("Data").Range("A" & satirsayisi).Value
        TextBox5.Value = Sheets("Data").Range("D" & satirsayisi).Value
        TextBox6.Value = Sheets("Data").Range("E" & satirsayisi).Value
        TextBox7.Value = Sheets("Data").Range("F" & satirsayisi).Value
        TextBox8.Value = Sheets("Data").Range("G" & satirsayisi).Value
    
    Else
    
        Label12.Caption = TextBox1.Value
        kacincikayit = 1
        kayitsayisi = WorksheetFunction.CountIf(Sheets("Data").Range("A:A"), TextBox1.Value)
        satirsayisi = WorksheetFunction.Match(TextBox1.Value * 1, Sheets("Data").Range("A1:A1048576"), False)
        
        TextBox9.Value = kayitsayisi
        TextBox10.Value = kacincikayit
        Label13.Caption = satirsayisi
        
        TextBox2.Value = Sheets("Data").Range("B" & satirsayisi).Value
        TextBox3.Value = Sheets("Data").Range("C" & satirsayisi).Value
        TextBox4.Value = Sheets("Data").Range("A" & satirsayisi).Value
        TextBox5.Value = Sheets("Data").Range("D" & satirsayisi).Value
        TextBox6.Value = Sheets("Data").Range("E" & satirsayisi).Value
        TextBox7.Value = Sheets("Data").Range("F" & satirsayisi).Value
        TextBox8.Value = Sheets("Data").Range("G" & satirsayisi).Value
    
    End If
    
    TextBox1.Value = ""
    TextBox1.SetFocus

End Sub
 
Katılım
17 Mart 2022
Mesajlar
281
Excel Vers. ve Dili
2016/Türkçe
Altın Üyelik Bitiş Tarihi
22-03-2023
Ömer Hocam Merhaba,
Tamamdır, desteğiniz için çok teşekkür ederim.
Scanner ile okutma yaptığımda mesajı vermiyor ama hatada vermiyor imleç direk ürün ıd kısmında kalıyor daha iyi oldu entere basmaya gerek kalmadan ve silme işlemi yapmadan seri bir şekilde okutma yapılabilir hale geldi çok teşekkür ederim.
Saygılarımla..
 
Üst