Kezdőlap › Fórumok › Excel programozás › Egyszerű kereső
- This topic has 2 hozzászólás, 2 résztvevő, and was last updated 8 years, 8 months telt el by 7even.
-
SzerzőBejegyzés
-
2016-01-31-19:14 #2501
Sziasztok! Szia Imre!
Segítséget szeretnék kérni, egy kis kereső rutin kódjával kapcsolatban. Kicsit elakadtam.
A lényeg, hogy az alábbi rutin egy inputbox-ban bekért szövegrészt megkeres az egész munkafüzetben, majd kiírja a a talált cellák címét az A oszlop usedrange alatti cellákba (kb olyasmit szeretnék mint a CTRL + F All Find beépített funkció) viszont végtelen ciklusba megy, ami teljesen egyértelmű, de nem tudom, hogyan lehetne elérni, hogy kilépjen a ciklusból, ha már végigment az utolsó nem üres cellán is. 🙁
Ha valaki tud segíteni előre is nagyon köszönöm.
A kód eddig:Sub cellakereso()
Dim Sh As Worksheet
Dim keresett As Range
Range(„A1”).Select
For Each Sh In ThisWorkbook.Worksheets
With Sh.UsedRange
Set keresett = .Cells.Find(What:=InputBox(„Mit keresünk?”))
If Not keresett Is Nothing Then
Do Until keresett Is (…na ide kellene talán, hogy meddig…)
Cells(ActiveCell.CurrentRegion.Cells(ActiveCell.CurrentRegion.Cells.Count).Offset(1, 0).Row, ActiveCell.Column).Select
Selection.Value = keresett.Address
Set keresett = .FindNext(keresett)Loop
End If
End With
Set keresett = Nothing
NextEnd Sub
2016-01-31-21:37 #2502Szia!
Ott keresd a problémát, hogy nézd meg, hogy működik a keresés, amikor kézzel keresel.
Amikor minden előforduláson átmentél a „Következő” gombbal, akkor elkezdi a keresést elölről, és újra az első találatra ugrik. Ezért a .find – .findnext ciklusoknál azt csinálják, hogy megjegyzik az első találat (.find) celláját, és a ciklus addig fut, amíg a .findnext újra az elsőnek megtalált cellára ugrik.Itt van két link, tanulmányozd:
http://www.ozgrid.com/forum/showthread.php?t=168157
http://www.ozgrid.com/forum/showthread.php?t=37604Még okozhat esetleg további problémát az, hoyg a találatok A oszlop végére írásánál SELECT-et használsz. meg kéne próbálni select nélkül, egyből beleírni.
Cells(ActiveCell.CurrentRegion.Cells(ActiveCell.CurrentRegion.Cells.Count).Offset(1, 0).Row, ActiveCell.Column).Value = keresett.Address
Imre
2016-02-01-11:51 #2508Igen gondoltam, hogy a SELECT is okozhat problémát, hiszen az aktiválja a cellát. Így viszont szuper és tökéletesen működik. Nagyon szépen köszönöm! 🙂
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.