(SATIR VE SÜTUN) DA BİRDEN FAZLA KOŞULLU VERİ ARAMA

Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
danersin' Alıntı:
[vb:1:a3d0d3ea3c]Private Sub CommandButton2_Click()
Sheets("VERİ").Select
sayac = 0
For i = 2 To Cells(65536, 2).End(xlUp).Row
If TextBox1.Value = Cells(i, 2) and Cells(i, 6) = "" And Cells(i, 7) <> "" Then
sayac = sayac + 1
End If
Next i
If sayac = 11 Then MsgBox ("12 D�NEM TAMAMLANMIÞTIR")
End Sub[/vb:1:a3d0d3ea3c]

Yukarıdaki kodun anlamı şu.

Veri sayfasında 2. sütunda son dolu hücreye kadar ;
textbox'daki değer 2. sütuna eşit olduğu ve
6. sütun boş olduğu
7. sütun dolu olduğu müddetce
sayacı bir arttırarak son satıra kadar git.
Döngü bittiğinde sayac 11 ise mesaj ver.

Sizin son yazdığınız kodlarda bunu yapmaya çalışıyor gibi. Olmayan şeyi açıklarsanız. Muhtemelen kurduğunuz mantık ta hata var.
 
Katılım
24 Mayıs 2005
Mesajlar
462
Excel Vers. ve Dili
Excel 2003 Türkçe
Sayın danersin, ben günlerdir çözmeye çalışıyorum evet haklısınız kurduğum mantıkta bir hata var, zaten bunu çözemiyorum "ATAÇ" olmadığı içinde uzun uzun anlatamıyorum. Ama tekrar anlatmaya çalışayım.
Birinci sütünda sıra numaraları var ikinci sütünda vergi numaraları ikinci sütundaki vergi numaraları (farklı vergi numaraları) değiştikçe sıra numarası da değişmektedir. yani sıra numarası (1) birden fazla olmaktadır. (A sütununda ki sıra numarası 1,2,3,4,5,6,7,8,9,10,11,12 birden fazla olabilmektedir. )
Benim amacım aynı vergi numarasından 1 den 12 ye kadar tamamlananların F sütunun "BOÞ" (yani ilgili satırı) G sütununun (yani ilgili satırı) "DOLU" ise Mesaj versin istiyorum. Yani TextBox1 e her vergi numarası girişi yapıp kaydet bütonuna bastığımda döngü çalışacak. Bu her defasında tekrar edecek. Teşekkür eder, çalışmalarınızda başarılar dilerim.


Kaydet bütonundaki kodlar şöyle;
Private Sub CommandButton1_Click()
If TextBox1 = "" Or TextBox2 = "" Or TextBox3 = "" Or TextBox4 = "" Or TextBox6 = "" Then
MsgBox "LÜTFEN VERİ BİLGİLERİNİ GİRİNİZ!", 16, "DİKKAT"
TextBox1.SetFocus
Exit Sub
End If
Dim Cevap As Integer
Cevap = MsgBox("KAYDETMEK İSTİYOR MUSUNUZ.?", _
vbOKOnly + vbYesNo, "UYARI")
If Cevap = vbYes Then
Sheets("VERİ").Select
sonsat = Sheets("VERİ").Cells(65536, 2).End(xlUp).Row + 1
Cells(sonsat, 2) = TextBox1.Value
Cells(sonsat, 3) = TextBox2.Value
Cells(sonsat, 4) = TextBox3.Value
Cells(sonsat, 5) = TextBox4.Value
Cells(sonsat, 6) = TextBox5.Value
Cells(sonsat, 7) = TextBox6.Value
MsgBox "VERİLERİNİZ KAYDEDİLMİÞTİR.", 16, "UYARI"
Range("A2:G65536").Select
ActiveWindow.SmallScroll Down:=-10
Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A2").Select
Sheets("VERİ").Select
Dim No As Long
For i = 2 To Cells(65536, 2).End(xlUp).Row
If Cells(i, 2) = TextBox1.Text Then
No = No + 1
Cells(i, 1) = No
End If
Next


BU ARAYA BİR KOD YAZMAYA ÇALIÞIYORUM

TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
TextBox1.SetFocus
End If
End Sub
 
Katılım
24 Mayıs 2005
Mesajlar
462
Excel Vers. ve Dili
Excel 2003 Türkçe
Arkadaşlar sorunumu çözdüm. Sayın danersin mesajınızdan sonra kodlar üzerinde çalışma yaptım ve buldum sizin ve ilgilenen tüm arkadaşların ellerine sağlık. Teşekkürler.

Düzenlediğim kodlar şu şekilde;
Private Sub CommandButton2_Click()
Sheets("VERİ").Select
sayac = 0
For i = 2 To Cells(65536, 2).End(xlUp).Row
If TextBox1.Text = Cells(i, 2) Then
If (Len(Trim(Cells(i, 6))) = 0) And (Len(Trim(Cells(i, 7))) <> 0) Then
sayac = sayac + 1
Else
sayac = 0
End If
End If
If sayac = 12 Then MsgBox ("TAMAM")
Next i
End Sub
 
Üst