Barkod okutma

Muhammet Okumuş

Destek Ekibi
Destek Ekibi
Katılım
28 Eylül 2007
Mesajlar
3,996
Excel Vers. ve Dili
2013 Türkçe
Arkadaşlar merhaba,
Bir tane barkod okuyucu aldım ve bunu Excel ile entegre etmek istiyorum. Userform'da Textbox'a barkodu okuyor. Textbox1_Change yapınca her rakam için kod çalışıyor. Okuma bitince kodun çalışması için ne yapabilirim?

Private Sub UserForm_Initialize()
ListView1.View = lvwReport
ListView1.Gridlines = True

ListView1.ColumnHeaders.Add , , "Barkod", 75
ListView1.ColumnHeaders.Add , , "Adet", 35
ListView1.ColumnHeaders.Add , , "Ürün", 105
ListView1.ColumnHeaders.Add , , "Fiyat", 40


For i = 1 To Cells(65536, 1).End(3).Row
ListView1.ListItems.Add , , Cells(i, 1).Value
ListView1.ListItems(i).SubItems(1) = Cells(i, 2).Value
ListView1.ListItems(i).SubItems(2) = Cells(i, 3).Value
ListView1.ListItems(i).SubItems(3) = Cells(i, 4).Value

Next i



End Sub

Private Sub TextBox1_Change()

x = Cells(Rows.Count, 1).End(3).Row + 1
Cells(x, 1) = TextBox1.Value


ListView1.ListItems.Clear
UserForm_Initialize
TextBox1 = ""

End Sub
 

Muhammet Okumuş

Destek Ekibi
Destek Ekibi
Katılım
28 Eylül 2007
Mesajlar
3,996
Excel Vers. ve Dili
2013 Türkçe
Sorun şu;barkodun 89654 olduğunu düşünelim Barkodu A sütunudaki son satıra 89654 yazması gerekirken
8
9
6
5
4
şeklinde alt alta yazıyor.
 

muygun

Özel Üye
Katılım
6 Temmuz 2004
Mesajlar
9,164
Excel Vers. ve Dili
Excel-2003 Türkçe
Merhaba;
eğer okunan karakter sayısı belli ise;
TextBox1_Change olayına textbox'un karakter sayısını kontrol ederek makroya işlem yaptır.

Private Sub TextBox1_Change()
If Len(TextBox1) = 5 Then
Cells(1, 1) = TextBox1
End If
End Sub

Gibi...
İyi çalışmalar.
 
Son düzenleme:

Muhammet Okumuş

Destek Ekibi
Destek Ekibi
Katılım
28 Eylül 2007
Mesajlar
3,996
Excel Vers. ve Dili
2013 Türkçe
Sn muygun cevabınız için teşekkür ederim. Ama maalesef karakter sayısı farklı.
 

muygun

Özel Üye
Katılım
6 Temmuz 2004
Mesajlar
9,164
Excel Vers. ve Dili
Excel-2003 Türkçe
Merhaba;

Peki satırno bulduğunuz kodu ilk karaktere bağlasanız (B1 hücresini kullandım);

If Len(TextBox1) = 1 And TextBox1 <> "" Then Cells(1, 2) = Cells(Rows.Count, 1).End(3).Row + 1
Cells(Cells(1, 2), 1) = TextBox1

gibi...
 
Son düzenleme:

Muhammet Okumuş

Destek Ekibi
Destek Ekibi
Katılım
28 Eylül 2007
Mesajlar
3,996
Excel Vers. ve Dili
2013 Türkçe
Sn muygun, her karakter okumada kod tetiklediği için bu yöntem de sonuca götürmüyor. Bu okuyucular hepsini aynı anda aktarma yapmıyor mu?
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,324
Excel Vers. ve Dili
2007 Türkçe
Peki change yerine afterupdate olayı veya commanbutton ile aktarmayı denediniz mi?
Fazladan bir tuşa basmış olursunuz.

Düzeltme:
Bir de kullanımı nasıl olur bilmiyorum ama zamanlama ile yapılsa?
Mesela ilk değeri aldıktan 2 saniye sonra gibi...
Kod:
Private Sub TextBox1_Change()
If Len(TextBox1.Value) = 1 Then Application.OnTime Now + TimeValue("00:00:02"), "aktar"
End Sub
Kod:
Sub aktar()
x = Cells(Rows.Count, 1).End(3).Row + 1
Cells(x, 1) = UserForm1.TextBox1.Value
UserForm1.TextBox1 = ""
End Sub
 
Son düzenleme:
Katılım
12 Aralık 2015
Mesajlar
1,207
Excel Vers. ve Dili
Türkçe Ofis 2007
Sayın Muhammet Okumuş
Aşağıdaki kod işinize yarayabilir
Kod:
Private Sub TextBox1_Change()
  X = Timer()
   Do While X + 3 > Timer()
       DoEvents
   Loop
    If TextBox1 <> "" Then
 ActiveCell.Value = TextBox1
 ActiveCell.Offset(1, 0).Select
   TextBox1.Value = ""
End If
End Sub
 
Son düzenleme:

Muhammet Okumuş

Destek Ekibi
Destek Ekibi
Katılım
28 Eylül 2007
Mesajlar
3,996
Excel Vers. ve Dili
2013 Türkçe
Yanımda bilgisayar olmadığından deneyemedim.Akşam deneyeceğim
 

Muhammet Okumuş

Destek Ekibi
Destek Ekibi
Katılım
28 Eylül 2007
Mesajlar
3,996
Excel Vers. ve Dili
2013 Türkçe
Sn alicimiri,
Cevabınız için teşekkür ederim. Vermiş olduğunuz kod çalışıyor. Ancak bazen kodun el ile girilmesi gerekebiliyor. Bu durumda 3 saniye içinde barkodu el ile girilmiyor. Barkod için 1 sn yeterli. Userform yerine Excel sayfalarını kullanmayı düşünüyorum.

Sn mucit77,
Sistem barkodu okuyunca otomatik olarak atsın istiyorum. Düğme ile uğraşmak zamanı uzatır.
Marketlerde yapılan sistem gibi bir şey yapmak istiyorum.
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,324
Excel Vers. ve Dili
2007 Türkçe
Eğer zamanlayıcı işinizi görüyorsa elle girişlerde ilk karakteri belirgin bir karakter kullanarak zamanlayıcın çalışması engellenir. Veri aktarılırken de ilk karakter harici aktarılabilir. Mesela: "+1258023515163" şeklinde veri girişi yapılabilir.
Sadece aklıma geldi, boşa gitsin istemedim, iyi çalışmalar...
 
Katılım
12 Aralık 2015
Mesajlar
1,207
Excel Vers. ve Dili
Türkçe Ofis 2007
Forma ikinci TextBox (elle girilebilmesi için) ilave edilip, Onun Change olayına aşağıdaki kod yazılabilir.
Kod:
Private Sub TextBox2_Change()
 X = Timer()
   Do While X + 5 > Timer()
       DoEvents
   Loop
    If TextBox2 <> "" Then
 TextBox1.Value = TextBox2
   TextBox2.Value = ""
 TextBox1.SetFocus
End If
End Sub
 
Son düzenleme:

Muhammet Okumuş

Destek Ekibi
Destek Ekibi
Katılım
28 Eylül 2007
Mesajlar
3,996
Excel Vers. ve Dili
2013 Türkçe
Arkadaşlar cevaplarınız için teşekkür ediyorum. Araştırıyorum, uğraşıyorum ama işin içinden çıkamayacağım.
 
Katılım
12 Aralık 2015
Mesajlar
1,207
Excel Vers. ve Dili
Türkçe Ofis 2007
Sayın Muhammet Okumuş
Derneğimizin Kütüphanesinde de barkotlu sisteme geçmeyi düşünüyoruz o yüzden konuya takıldım. Aşağıdaki kodlar hem klavye ile hem de barkot okuyucu ile barkot numarası girmesini sağlar diye düşünüyorum.
Kod:
Private Sub TextBox1_Change()
    X = Timer()
   Do While X + 1 > Timer()
       DoEvents
   Loop
    If TextBox1 <> "" Then
 ActiveCell.Value = TextBox1
 ActiveCell.Offset(1, 0).Select
   TextBox1.Value = ""
End If
 
End Sub

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If Len(TextBox1) = 1 Then
    X = Timer()
   Do While X + 8 > Timer()
       DoEvents
   Loop
    If TextBox1 <> "" Then
 ActiveCell.Value = TextBox1
 ActiveCell.Offset(1, 0).Select
   TextBox1.Value = ""
End If
End If
End Sub
 
Katılım
24 Ağustos 2017
Mesajlar
34
Excel Vers. ve Dili
Office 2010 English
Arkadaşlar merhaba,

Daha öncesinde aynı başlıkla konu açıldığı için ben de sorumu buradan sormak istiyorum. Çok basit bir isteğim olacak, barkod okuyucum var. 12 ya da 13 haneli barkodları okuttuğumda, barkodların excelde alt altta gelmesini istiyorum. Yardımcı olabilirseniz çok sevinirim.

Teşekkürler
 

netzone

Altın Üye
Katılım
10 Mayıs 2006
Mesajlar
791
Excel Vers. ve Dili
🅾🅵🅵🅸🅲🅴
⎝365 64 Bit 𝙏𝙍⎠
🆆🅸🅽🅳🅾🆆🆂
⎝11 64 Bit 𝙏𝙍⎠
Altın Üyelik Bitiş Tarihi
12-09-2027
Merhaba @Havenless,

Barkod okuyucu ile okutmuş olduğunuz barkod sonrası giriş için otomatik Enter tuşunu tetiklemiş olur. Söz konusu excel de herhangi bir hücredeyken okutmanız halinde alt satıra otomatik geçmesi gerekir.

Geçmiyor ise ayarlar; Excel seçenekleri > Gelişmiş > Enter'a bastıktan sonra seçimi taşı: Aşağı olarak seçin. ve deneyin.

İyi çalışmalar.
 
Katılım
24 Ağustos 2017
Mesajlar
34
Excel Vers. ve Dili
Office 2010 English
Merhaba @Havenless,

Barkod okuyucu ile okutmuş olduğunuz barkod sonrası giriş için otomatik Enter tuşunu tetiklemiş olur. Söz konusu excel de herhangi bir hücredeyken okutmanız halinde alt satıra otomatik geçmesi gerekir.

Geçmiyor ise ayarlar; Excel seçenekleri > Gelişmiş > Enter'a bastıktan sonra seçimi taşı: Aşağı olarak seçin. ve deneyin.

İyi çalışmalar.
Çok teşekkür ederim.
 
Üst