Textboxa girilen değere göre kıyaslama yapmak.

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selam arkadaşlar,

Textbox1 de bir değerim var.
Textbox2 ye yeni bir değer giriyorum. Bu değeri Sayfa1 de E sütununda aratıp buldurmak ve bulunan değerin olduğu satırdaki C sütununa denk gelen değerle Textbox1 de bulunan değerin aynı olup olmadığını nasıl bir kodla kıyaslama yaptırabilirim.

İyi çalışmalar dilerim. :hey:
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
[vb:1:187110a096]If TextBox1.Value = Cells([e:e].Find(TextBox2).Row, 3) Then
MsgBox "aynı"
Else
MsgBox "aynıdeğil"
End If
[/vb:1:187110a096]
 

Korhan Ayhan

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

verdiğiniz kodu aşağıdaki şekilde uyarladım fakat çalışmadı nerde hata yapıyorum yardımcı olurmusunuz.

Private Sub TextBox7_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error GoTo 10
If TextBox7 = "" Then
Cancel = False
TextBox7.BackColor = vbWhite
Exit Sub
End If

Bul = Sheets("ZİMMET").Cells([E:E].Find(TextBox7).Row, 3)
If Bul = TextBox2.Value Then
MsgBox ("Girdiğiniz kayıt numarası farklı bir personele aittir." & Chr(10) & _
"Lütfen girdiğiniz değeri kontrol ediniz."), vbExclamation, "DİKKAT !"
Cancel = True
TextBox7 = ""
TextBox7.SetFocus
TextBox7.BackColor = vbYellow

Else

ARA = WorksheetFunction.CountIf(Sheets("ZİMMET").Columns(5), TextBox7.Value)
If ARA > 0 Then
Cancel = False
TextBox7.BackColor = vbWhite
Else
10 MsgBox ("Girdiğiniz kayıt numarası bulunamamıştır."), vbExclamation, "DİKKAT !"
Cancel = True
TextBox7 = ""
TextBox7.SetFocus
TextBox7.BackColor = vbYellow
End If
End If
End Sub

İyi çalışmalar dilerim. :hey:
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
If Bul = TextBox2.Value Then
MsgBox ("Girdiğiniz kayıt numarası farklı bir personele aittir." & Chr(10) & _
"Lütfen girdiğiniz değeri kontrol ediniz."), vbExclamation, "DİKKAT !"


bul textbox2 ye eşit olunca farklı personel mi oluyor yoksa bu personel kayıtlı mı oluyor
 

Korhan Ayhan

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

Sorunumu aşağıdaki kodla hallettim fakat başka bir problemim daha var yardımcı olursanız sevinirim.

(Aşağıdaki şekilde uygulama sağlıklımıdır.)

On Error GoTo 10
Dim BUL As Double
BUL = Sheets("ZİMMET").Cells([E:E].Find(What:=TextBox7.Value, LookAt:=xlWhole).Row, 3)
If TextBox2.Value <> BUL Then
MsgBox ("İlk girdiğiniz kayıt numarası " & (TextBox2.Value) & " kod numaralı personele" _
& Chr(10) & "Son girdiğiniz kayıt numarası ise " & (BUL) & " kod numaralı personele aittir." _
& Chr(10) & "Lütfen girdiğiniz değerleri kontrol ediniz."), vbExclamation, "DİKKAT !"
Cancel = True
TextBox1 = Date
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox6.SetFocus
Exit Sub
End If

Diğer problemim ise diyelimki "Sayfa1" de "E" sütununda aşağıdaki biçimde verilerim var.

1
2
3
4
5
6
.... şeklinde devam ediyor.

Textbox1 e 1 değerini girip , Textbox2 yede 10 değerini girip entera bastığımda verdiğim değer aralığından herhangi birtanesi "E" sütununda varsa;
"Girdiğiniz değer aralığı sayfanızda mevcut !" şeklinde uyarı verdirmek istiyorum. Bu işlem için nasıl bir kod kullanmam gerekiyor.

İyi çalışmalar dilerim. :hey:
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
1-e sütunu 1 den başlayıp sıralı gitmiyor mu? e sütununda değerler arasında atlama varmı?
2-textbox1 =5 , textbox2=8 ise e sutununda 5,6,7,8 in varlığınımı kontrol ettirmek istiyorsunuz?
 

Korhan Ayhan

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

E sütunundaki değerler arasında atlama olabiliyor. Ben her durumda girdiğim değer aralığındaki sayıların tamamının veya birtanesinin daha önce girilip girilmediğini kontrol ettirmek istiyorum.

İyi çalışmalar dilerim. :hey:
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
şöyle bir dene
[vb:1:3846975a59]Private Sub CommandButton1_Click()
For x = Val(TextBox1) To Val(TextBox2)
On Error GoTo son
c = [e:e].Find(x)
If c > 0 Then
MsgBox "aradığınız aralıktan " & x & " e sütununda mevcut"
Exit For
End If
Next
Exit Sub
son:
MsgBox "aradığınız aralık e sütununda mevcut değil"
End Sub[/vb:1:3846975a59]
 

Korhan Ayhan

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

Vermiş olduğunuz kodlar sağlıklı çalışmadı. Ã?rnek dosyayı yolluyorum üzerinde yapabilirseniz çok sevinirim. Aslında bahsettiğim bölümde bir denetleme yaptırıyorum fakat oda sağlıklı çalışmıyor.

Ã?rnek;
Bir personele 1-50 aralığını zimmet yapıyorum. Þuanda kullandığım prosedürde aynı aralığı yeniden zimmet yapmak istediğimde doğru çalışıyor fakat 5-20 aralığı dediğimde denetleme yapmıyor ve zimmet oluşturuyor doğal olarak sonuç yanlış oluyor. Yani daha önce zimmet yapılmış değerlerden tekrar zimmet yapmak istediğimde uyarı versin istiyorum.

İyi çalışmalar dilerim. :hey:
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
[vb:1:797e5e4ab3]Dim ARA1 As Double, ARA2 As Double
ARA1 = WorksheetFunction.Min(Sheets("ZİMMET").[E1:E65536])
ARA2 = WorksheetFunction.Max(Sheets("ZİMMET").[E1:E65536])
If ARA1 >= TextBox5.Value * 1 And ARA2 <= TextBox6.Value * 1 Then
MsgBox ("Zimmetlemek istediğiniz seri aralığından " & ARA1 & " ile " & ARA2 & " seri aralığı daha önceden zimmetlenmiştir." _
& Chr(10) & "Lütfen girdiğiniz değerleri kontrol ediniz."), vbExclamation, "DİKKAT !"
TextBox5.Value = ""
TextBox6.Value = ""
TextBox5.SetFocus
Exit Sub
End If [/vb:1:797e5e4ab3]

bu kodların altına aşağıdaki kodları ekle dene

[vb:1:797e5e4ab3]
For X = Val(TextBox5) To Val(TextBox6)
On Error GoTo son
c = [ZİMMET!e:e].Find(X)
If c > 0 Then
MsgBox "Zimmetlemek istediğiniz aralıktan " & X & " daha önce zimmetlenmiş"
TextBox5.Value = ""
TextBox6.Value = ""
TextBox5.SetFocus
Exit Sub
End If
Next
son:[/vb:1:797e5e4ab3]
 

Korhan Ayhan

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

Þöyle bir problemle karşılaştım;

İlk olarak 10-20 aralığını zimmetledim. Daha sonra 1-10 aralığını zimmetlediğimde uyarı vermesi gerekirken vermedi ve zimmeti gerçekleştirdi. Bunu nasıl önleriz.

İyi çalışmalar dilerim.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
birde şöyle dene
[vb:1:b5c1072549]For X = Val(TextBox5) To Val(TextBox6)
c = WorksheetFunction.CountIf([ZİMMET!e:e], X)
If c > 0 Then
MsgBox "Zimmetlemek istediğiniz aralıktan " & X & " daha önce zimmetlenmiş"
TextBox5.Value = ""
TextBox6.Value = ""
TextBox5.SetFocus
Exit Sub
End If
Next
[/vb:1:b5c1072549]
 

Korhan Ayhan

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

Konuyla ilgili son bir sorum daha olacak.

Zimmet Dönüş formunda seri olarak zimmetten düşme işlemi yaparken denetleme amaçlı aşağıdaki kodu kullanıyorum.

On Error GoTo 10
Dim BUL As Double
BUL = Sheets("ZİMMET").Cells([E:E].Find(What:=TextBox7.Value, LookAt:=xlWhole).Row, 3)
If TextBox2.Value <> BUL Then
MsgBox ("İlk girdiğiniz seri numarası " & (TextBox2.Value) & " kod numaralı personele," _
& Chr(10) & "Son girdiğiniz seri numarası ise " & (BUL) & " kod numaralı personele aittir." _
& Chr(10) & "Lütfen girdiğiniz değerleri kontrol ediniz."), vbExclamation, "DİKKAT !"
Cancel = True
TextBox1 = Date
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox6.SetFocus
Exit Sub
End If

Fakat diyelimki 1-50 seri aralığı 100 kod numaralı personele , 50-100 seri aralığı 101 kod numaralı personele , 101-150 seri aralığıda yine 100 kod numaralı personele ait olsun.

1-50 seri aralığını silmek istediğimde problem yok kodlar doğru çalışıyor. Fakat 1-150 seri aralığını sil dediğimde aradaki 101 kod numaralı personele ait olan 50-100 seri aralığınıda uyarı vermeden siliyor. Bunu nasıl önleriz.

İyi çalışmalar dilerim. :hey:
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
fazla inceleyemedim ama şöyle bir dene
[vb:1:bea4538227]For X = TextBox6 To TextBox7
BUL = Sheets("ZİMMET").Cells([e:e].Find(What:=X, LookAt:=xlWhole).Row, 3)
If TextBox2.Value <> BUL Then
MsgBox ("İlk girdiğiniz seri numarası " & (TextBox2.Value) & " kod numaralı personele," & Chr(10) & X & "seri numarası ise " & (BUL) & " kod numaralı personele aittir." & Chr(10) & "Lütfen girdiğiniz değerleri kontrol ediniz."), vbExclamation, "DİKKAT !"
Cancel = True
TextBox1 = Date
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox6.SetFocus
Exit Sub
End If
Next
[/vb:1:bea4538227]
 
Üst