Mükerrer Kayıt Engelleme

hbgny

Altın Üye
Katılım
28 Eylül 2005
Mesajlar
177
Excel Vers. ve Dili
Microsoft Excel Office 2013 Türkçe
Altın Üyelik Bitiş Tarihi
05-09-2027
Merhaba,
Userform ile daha yeni yeni işlem yapmaya başladım. Aşağıdaki formülle excele veri aktarıyorum. Ama istiyorum ki eğer A kolonunda daha önce aynı kod var ise kayıt yapmasın, uyarı versin. Bu koda nasıl bir ekleme yapmam gerekir? Yardımcı olabilir misiniz?

Private Sub UserForm_Initialize()

Dim x As Long
For x = 2 To 1000000

If Sheets("StokKartı").Range("A" & x).Value = "" Then Exit For
Next
LstStokListesi.ColumnCount = 9
LstStokListesi.RowSource = "StokKartı!A2:I" & x - 1


End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,330
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
İnceleyiniz.

 

hbgny

Altın Üye
Katılım
28 Eylül 2005
Mesajlar
177
Excel Vers. ve Dili
Microsoft Excel Office 2013 Türkçe
Altın Üyelik Bitiş Tarihi
05-09-2027
İnceleyiniz.

İlginize teşekkür ederim.
Az önce yanlış formülü kopyalayıp atmışım. Şimdi gönderdiğim formüle, sizin tavsiye ettiğiniz linkleri inceleyip, kırmızıya boyadığım formülü ekledim. Ama çalışmadı. Daha yeni yeni kod yazmaya başladığım için işin içinden çıkamadım. Yardımcı olabilir misiniz?


Private Sub BtnKaydet_Click()
Dim x As Long
Dim sor As Byte

If TxtStokKodu.Value = "" Or Not IsNumeric(TxtStokAlışFiyatı.Value) Or Not IsNumeric(TxtStokSatışFiyatı.Value) Then
MsgBox "Lütfen girmiş olduğunuz bilgileri kontrol ediniz..."
Exit Sub
End If
sor = MsgBox("Stok Kaydedilsin mi?", vbDefaultButton1 + vbQuestion + vbYesNo, "KAYDET")
If sor = 7 Then Exit Sub
For x = 2 To 1000000000
If WorksheetFunction.CountIf(Sheets("StokKartı").Range("A:A" & x), TxtStokKodu.Value) > 0 Then
MsgBox "Bu numara daha önce kaydedilmiş", vbCritical
Exit Sub
End If

If Sheets("stokkartı").Range("a" & x).Value = "" Then Exit For
Next
Sheets("stokkartı").Range("a" & x).Value = UCase(TxtStokKodu.Value)
Sheets("stokkartı").Range("b" & x).Value = UCase(TxtStokAçıklaması.Value)
Sheets("stokkartı").Range("c" & x).Value = UCase(TxtStokGrupKodu.Value)
Sheets("stokkartı").Range("d" & x).Value = UCase(TxtStokAltGrupKodu.Value)
Sheets("stokkartı").Range("e" & x).Value = UCase(TxtStokBarkodu.Value)
Sheets("stokkartı").Range("f" & x).Value = UCase(TxtStokAlışFiyatı.Value)
Sheets("stokkartı").Range("g" & x).Value = UCase(TxtStokSatışFiyatı.Value)
Sheets("stokkartı").Range("h" & x).Value = UCase(CbxBirimi.Value)
Sheets("stokkartı").Range("ı" & x).Value = UCase(CbxKdvOranı.Value)
BtnVazgeç_Click
FrmMesaj.LblMesaj.Caption = "Stok Kaydedildi..."
FrmMesaj.Show
End Sub
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
If WorksheetFunction.CountIf(Sheets("StokKartı").Range("A1:A" & x), TxtStokKodu.Value) > 0 Then
 

hbgny

Altın Üye
Katılım
28 Eylül 2005
Mesajlar
177
Excel Vers. ve Dili
Microsoft Excel Office 2013 Türkçe
Altın Üyelik Bitiş Tarihi
05-09-2027
Oldu. İlginize çok teşekkür ederim.
 
Katılım
24 Nisan 2005
Mesajlar
3,672
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Alternatif;
Ben aşağıdaki şekilde kullanıyorum. Seçimleri ihtiyaç kadar arttırabilirsiniz.

Kod:
'Kullanımı
if varmi("STK001","C") then
   msgbox ("Ürün bulundu")
end if

Function varmi(bilgi, secim) As Long   
    If secim = "A" Then Set sayfak = sheets("Firmalar").Range("A:A").Find(bilgi, , xlValues, xlWhole)
    If secim = "B" Then Set sayfak = sheets("Hareketler").Range("B:B").Find(bilgi, , xlValues, xlWhole)
    If secim = "C" Then Set sayfak = sheets("Urunler").Range("C:C").Find(bilgi, , xlValues, xlWhole)
    
    If Not sayfak Is Nothing Then
       varmi = sayfak.Row
       Exit Function
    End If
    varmi = 0
End Function
 
Üst