Aramada Yok ise

Kemal Demir

Özel Üye
Katılım
29 Temmuz 2004
Mesajlar
2,108
Arkadaslar iyi Tatiller,

Başlık Pek Uygun olmadı kusura bakmayın.

Elimdeki Kodda a kolonunda arama yapılıp değer varsa b kolonunu okuyor

Private Sub CommandButton1_Click()
If TextBox1.Value = "" Then
MsgBox ("Aranmasını İstediğiniz Kelimeyi Giriniz")
Exit Sub
End If

Set s1 = Sheets("DATA")
sat = s1.Columns(1).Find(TextBox1.Value).Row
TextBox2.Value = s1.Cells(sat, 2).Value
s1.Cells(sat, 1).Select
End Sub
***********

Yapamadığım bir durum söz konusu;

Textbox1'e girdiğim kelime Aranan sutunde yok ise Bana Msgbox sonucu aradığınız kelime mevcut değil ibaresinin Çıkmasını İstiyorum.

Ama neyzakkı herzamanki gibi beceremedim.
Yardımlarını bekliyorum
Saygılar.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki gibi deneyin.

[vb:1:8fef4e8e91]Private Sub CommandButton1_Click()
on error goto 10
If TextBox1.Value = "" Then
MsgBox ("Aranmasını İstediğiniz Kelimeyi Giriniz")
Exit Sub
End If

Set s1 = Sheets("DATA")
sat = s1.Columns(1).Find(TextBox1.Value).Row
TextBox2.Value = s1.Cells(sat, 2).Value
s1.Cells(sat, 1).Select
exit sub
10 msgbox "ARADIÐINIZ KELİME MEVCUT DEÐİLDİR"

End Sub
[/vb:1:8fef4e8e91]
 
Katılım
14 Eylül 2005
Mesajlar
19
...

' *** AÐUSTOS DOSYASINDA ARAMA YAPAR ***

Workbooks.Open Filename:=path2 & dosya
Sheets("ARANAN").Select

On Error GoTo 10

Cells.Find(What:=anahtar, After:=ActiveCell, LookIn:=xlValues _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Select



Selection.End(xlToLeft).Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy

Workbooks("sorunlu").Activate
ActiveSheet.Paste
ActiveCell.SpecialCells(xlLastCell).Select
ActiveCell.Offset(2, -7).Select

10 ActiveWorkbook.Close


' *** EYLUL DOSYASINDA ARAMA YAPAR ***

Workbooks.Open Filename:=path3 & dosya
Sheets("ARANAN").Select
Range("B2").Select


On Error GoTo 20

Cells.Find(What:=anahtar, After:=ActiveCell, LookIn:=xlValues _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Select


Selection.End(xlToLeft).Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy

Workbooks("sorunlu").Activate
ActiveSheet.Paste
ActiveCell.SpecialCells(xlLastCell).Select
ActiveCell.Offset(2, -7).Select

20 ActiveWorkbook.Close

...

arkadaşlar yukarıdaki kodun birinci kısımda Find işlemini yapıyor yalnız ikinci kısımdaki Findda hata veriyor. İlk kısmı silip denediğimde ikincisi de çalıştı, garip ama. Verdiği hata şöyle:

Run-time error '91':
Object variable or With block variable not set

Nedeni nedir? Nasıl düzeltirim bu işi?
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
On error goto komutu eğer ilk dosyada hata bulmuşsa kodun çalışmasını devam ettirmez, yani kodun ikinci kısmı çalışmayacaktır. Hata buradadır. Eğer birinci dosyada aradığınızı bulamazsa ikinci dosyaya bakmasını sağlayacak şekilde kodlamanızı değiştirin.
 
Katılım
14 Eylül 2005
Mesajlar
19
ben yanlış olabilirim ama dediğinize göre 10 numarası verdiğim satırdan sonrasının çalışmaması lazım oysaki yukardaki kodda çalışmayan yer yadece Find içeren kısım. Find ile ilgili özel bir durum olduğunu düşünerek kodlama yaparak değil kaydetme yöntemiyle çeşitli şekillerde Find içeren yeni bir makro oluşturdum. Bu kodu adımladığımda ki goto gibi bir kod bulunmamakta ve hata içermemektedir; yine bir dosyadan farklı bir dosyaya geçip işlettiğim Find kodunun aynı hatayı verdiğini gördum.

benim kanaatim çalışma kitabı değişmesi sırasında Find parametrelirinin bir veya bir kaçında bozulma oluyor. şöyle bir benzetme yapsam yanlış olmaz herhalde, c'de string işlemi yaparken buffer temizlemek gerekmesi gibi bir durum var sanırım. bir şekilde Find komutuna reset atmamız lazım :D

tabi düşüncem tamamiyle yanlış olabilir. yardımcı olabilecek arkadaşları da yanlış yönlendirmek istemem.

Ayrıca aynı işi farklı bir kod ile yapabilecek önerisi olan arkadaşların fikirlerini de öğrenmek isterim

teşekkürler...
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Þimdi daha detaylı yaptığım incelemede kodlarınızda hata verebilecek bir satıra denk gelmedim. Tabiiki kodu çalıştırıp deneme şansım olmadı. Kodunuza aşağıdaki kırmızı renkli satırı ilave ederek denermisiniz.

[vb:1:c34e49a7de]Workbooks.Open Filename:=path3 & dosya
workbooks(dosya).activateSheets("ARANAN").Select
Range("B2").Select
[/vb:1:c34e49a7de]
 
Katılım
14 Eylül 2005
Mesajlar
19
sayın leventm

dediğinizi yaparak denedim. beklediğim gibi olmadı çünkü dosyayı açtığımda zaten çalışma kitabı aktif hale geliyor.zaten diğer kodlar sorunsuz çalışıyor. problem Find ve On Error ile alakalı sanırım. yukardaki mesajımdan sonra bir kaç deneme daha yaptım ve sorunun sadece find kaynaklı olmadığını gördüm.

sorun şu ki ilk Findda kayıtı bulamazsa goto düzgün çalışıyor. ancak akabinde ikinci Find da sonuç döndürmezse hata veriyor oysa ilki gibi belirtilen etikete gitmesi gerekli. ilk Find hata vermezse ikincide kayıtı bulamadığı durumlarda sorun yaşanmıyor ve belirtilen etikete gidiyor.

son bir deneme olarak, programımın mantığını anlatıp tam kodunu yolluyorum:
farklı klasörlerde aynı isimli 3 adet excel dosyam var. kullanıcı bunlardan birincisini inceliyor ve sorunlu gördüğü kayıtı seçiyor. bu aşamadan sonra makro çalışıyor ve diğer dosyaların ilgli kısımlarından tabi varsa bu kayıta ait satırları alıp "sorunlu.xls" dosyasına aktarıyor.

Bu sorun üzerinde kafa yoran herkese şimdiden teşekkürler. Olumsuz da olsa bir cevap yazarsanız sevinirim.

iyi çalışmalar...
 
Üst