Tekrarlayan Veri Varsa İşlem Yapmasın Yoksa Yapsın

Furkan TARAKÇI

Altın Üye
Katılım
15 Şubat 2022
Mesajlar
51
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO (Sürüm 2205 Derleme 16.0.15225.20172) 64 bit Türkçe
Altın Üyelik Bitiş Tarihi
27-05-2027
Private Sub CommandButton2_Click()

Dim km1 As Byte
km1 = Len(TextBox2.Text) - 4
k1 = Left(TextBox2.Value, km1) * 1000 + Right(TextBox2.Value, 3)

Dim km2 As Byte
km2 = Len(TextBox3.Text) - 4
k2 = Left(TextBox3.Value, km2) * 1000 + Right(TextBox3.Value, 3)

q = 10

w = WorksheetFunction.CountIf(Sheets("KAYIT").Range("B:B"), "<>") + 4
For i = 4 To w
If Cells(i, 6) = ComboBox1.Value And Cells(i, 7) = ComboBox2.Value Then
If Cells(i, 4) = k1 And Cells(i, 5) = k2 Then 'Burada eşit olmayan her satırdaki değer için aşağıdaki işlemi yapıyor
MsgBox "Bu Bilgilere Sahip Kayıt Mevcut"
Else

q = w + 3
ActiveWorkbook.Sheets("KAYIT").Cells(q, 1) = q - 3
ActiveWorkbook.Sheets("KAYIT").Cells(q, 2) = TextBox8.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 3) = TextBox4.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 3).NumberFormat = "dd/mm/yyyy"
ActiveWorkbook.Sheets("KAYIT").Cells(q, 4) = k1
ActiveWorkbook.Sheets("KAYIT").Cells(q, 4).NumberFormat = "##0+000"
ActiveWorkbook.Sheets("KAYIT").Cells(q, 5) = k2
ActiveWorkbook.Sheets("KAYIT").Cells(q, 5).NumberFormat = "##0+000"
ActiveWorkbook.Sheets("KAYIT").Cells(q, 6) = ComboBox1.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 7) = ComboBox2.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 8) = ComboBox3.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 9) = ComboBox4.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 10) = TextBox1.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 11) = TextBox7.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 12) = ComboBox5.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 13) = TextBox5.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 15) = TextBox6.Value
End If
End If
Next i


Kurguyu yanlış kurmuş olabilirim. Açıkcası sayfam çok satırlı olacak veri girdikçe tıkanmasını da istemiyorum. User form oluşturuyorum. Burada girdiğim bazı değerler excel sayfamda mevcutsa kayıt yapmasın uyarsın. Eğer hiç yoksa girdiğim değerleri kaydetsin.
 

Furkan TARAKÇI

Altın Üye
Katılım
15 Şubat 2022
Mesajlar
51
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO (Sürüm 2205 Derleme 16.0.15225.20172) 64 bit Türkçe
Altın Üyelik Bitiş Tarihi
27-05-2027
Private Sub CommandButton2_Click()

Dim km1 As Byte
km1 = Len(TextBox2.Text) - 4
k1 = Left(TextBox2.Value, km1) * 1000 + Right(TextBox2.Value, 3)

Dim km2 As Byte
km2 = Len(TextBox3.Text) - 4
k2 = Left(TextBox3.Value, km2) * 1000 + Right(TextBox3.Value, 3)

q = 10

w = WorksheetFunction.CountIf(Sheets("KAYIT").Range("B:B"), "<>") + 4
For i = 4 To w
If Cells(i, 6) = ComboBox1.Value And Cells(i, 7) = ComboBox2.Value Then
If Cells(i, 4) = k1 And Cells(i, 5) = k2 Then 'Burada eşit olmayan her satırdaki değer için aşağıdaki işlemi yapıyor
MsgBox "Bu Bilgilere Sahip Kayıt Mevcut"
Else

q = w + 3
ActiveWorkbook.Sheets("KAYIT").Cells(q, 1) = q - 3
ActiveWorkbook.Sheets("KAYIT").Cells(q, 2) = TextBox8.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 3) = TextBox4.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 3).NumberFormat = "dd/mm/yyyy"
ActiveWorkbook.Sheets("KAYIT").Cells(q, 4) = k1
ActiveWorkbook.Sheets("KAYIT").Cells(q, 4).NumberFormat = "##0+000"
ActiveWorkbook.Sheets("KAYIT").Cells(q, 5) = k2
ActiveWorkbook.Sheets("KAYIT").Cells(q, 5).NumberFormat = "##0+000"
ActiveWorkbook.Sheets("KAYIT").Cells(q, 6) = ComboBox1.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 7) = ComboBox2.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 8) = ComboBox3.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 9) = ComboBox4.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 10) = TextBox1.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 11) = TextBox7.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 12) = ComboBox5.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 13) = TextBox5.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 15) = TextBox6.Value
End If
End If
Next i


Kurguyu yanlış kurmuş olabilirim. Açıkcası sayfam çok satırlı olacak veri girdikçe tıkanmasını da istemiyorum. User form oluşturuyorum. Burada girdiğim bazı değerler excel sayfamda mevcutsa kayıt yapmasın uyarsın. Eğer hiç yoksa girdiğim değerleri kaydetsin.

Private Sub CommandButton2_Click()

Dim km1 As Byte
km1 = Len(TextBox2.Text) - 4
k1 = Left(TextBox2.Value, km1) * 1000 + Right(TextBox2.Value, 3)

Dim km2 As Byte
km2 = Len(TextBox3.Text) - 4
k2 = Left(TextBox3.Value, km2) * 1000 + Right(TextBox3.Value, 3)

q = 10

w = WorksheetFunction.CountIf(Sheets("KAYIT").Range("B:B"), "<>") + 3
For i = 4 To w
If Cells(i, 6) = ComboBox1.Value And Cells(i, 7) = ComboBox2.Value Then
If Cells(i, 4) = k1 And Cells(i, 5) = k2 Then
Z = 1
Exit For
Else
Z = 0
End If
End If
Next i

If Z = 1 Then
MsgBox "Bu Bilgilere Sahip Kayıt Mevcut"
Else
q = w
ActiveWorkbook.Sheets("KAYIT").Cells(q, 1) = q - 3
ActiveWorkbook.Sheets("KAYIT").Cells(q, 2) = TextBox8.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 3) = TextBox4.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 3).NumberFormat = "dd/mm/yyyy"
ActiveWorkbook.Sheets("KAYIT").Cells(q, 4) = k1
ActiveWorkbook.Sheets("KAYIT").Cells(q, 4).NumberFormat = "##0+000"
ActiveWorkbook.Sheets("KAYIT").Cells(q, 5) = k2
ActiveWorkbook.Sheets("KAYIT").Cells(q, 5).NumberFormat = "##0+000"
ActiveWorkbook.Sheets("KAYIT").Cells(q, 6) = ComboBox1.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 7) = ComboBox2.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 8) = ComboBox3.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 9) = ComboBox4.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 10) = TextBox1.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 11) = TextBox7.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 12) = ComboBox5.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 13) = TextBox5.Value
ActiveWorkbook.Sheets("KAYIT").Cells(q, 15) = TextBox6.Value
End If

End Sub

Bu şekilde kodlayınca istediğim oldu fakat çok fazla satır olunca kasar mı bilemem, varsa daha kolay ve kasmayacak bir kodlama yardımlarınızı beklemekteyim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,269
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Profilinizde hangi excel sürümünü kullandığınız belli değil. Bu bilgiler sizlere verilecek cevaplar için önem arz etmektedir.

Eğer yeni sürümleri kullanıyorsanız ÇOKEĞERSAY fonksiyonu ile döngü kullanmadan tek hamlede mükerrer kayıt kontrolü yapabilirsiniz.
 

Furkan TARAKÇI

Altın Üye
Katılım
15 Şubat 2022
Mesajlar
51
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO (Sürüm 2205 Derleme 16.0.15225.20172) 64 bit Türkçe
Altın Üyelik Bitiş Tarihi
27-05-2027
Profilinizde hangi excel sürümünü kullandığınız belli değil. Bu bilgiler sizlere verilecek cevaplar için önem arz etmektedir.

Eğer yeni sürümleri kullanıyorsanız ÇOKEĞERSAY fonksiyonu ile döngü kullanmadan tek hamlede mükerrer kayıt kontrolü yapabilirsiniz.
Microsoft® Excel® Microsoft 365 için MSO (Sürüm 2205 Derleme 16.0.15225.20172) 64 bit
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,269
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu bilgiyi mesaj olarak değilde profilinize yazarsanız kalıcı olur.
 

Furkan TARAKÇI

Altın Üye
Katılım
15 Şubat 2022
Mesajlar
51
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO (Sürüm 2205 Derleme 16.0.15225.20172) 64 bit Türkçe
Altın Üyelik Bitiş Tarihi
27-05-2027
Profilinizde hangi excel sürümünü kullandığınız belli değil. Bu bilgiler sizlere verilecek cevaplar için önem arz etmektedir.

Eğer yeni sürümleri kullanıyorsanız ÇOKEĞERSAY fonksiyonu ile döngü kullanmadan tek hamlede mükerrer kayıt kontrolü yapabilirsiniz.

ÇOKEĞERSAY fonksiyonu kullandığım excel sürümüne uygun mu? Değilse başka bir yöntem var mıdır?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,269
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Tekrar eden kayıt için kullandığınız döngü yerine aşağıdaki gibi bir satır yeterli olacaktır.

C++:
Say = WorksheetFunction.CountIfs(Sheets("KAYIT").Range("D:D"), k1,Sheets("KAYIT").Range("E:E"), k2, Sheets("KAYIT").Range("F:F"), ComboBox1.Value, Sheets("KAYIT").Range("G:G"), ComboBox2.Value)
 

Furkan TARAKÇI

Altın Üye
Katılım
15 Şubat 2022
Mesajlar
51
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO (Sürüm 2205 Derleme 16.0.15225.20172) 64 bit Türkçe
Altın Üyelik Bitiş Tarihi
27-05-2027
Tekrar eden kayıt için kullandığınız döngü yerine aşağıdaki gibi bir satır yeterli olacaktır.

C++:
Say = WorksheetFunction.CountIfs(Sheets("KAYIT").Range("D:D"), k1,Sheets("KAYIT").Range("E:E"), k2, Sheets("KAYIT").Range("F:F"), ComboBox1.Value, Sheets("KAYIT").Range("G:G"), ComboBox2.Value)

Korhan Bey bu satır kaydın olup olmadığını bana gösterdi fakat kaçıncı satırda olduğunu .row yazdım olmadı. Nasıl bulabilirim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,269
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu komut adı üzerinde çoklu koşula göre sayma işlemi yapıyor. Konu başlığınıza uygun cevabı verdiğimi düşünüyorum. Farklı konular için farklı başlıklar açmalısınız.
 
Üst