Nejste přihlášen/a.

Přihlásit se do poradny

 

Word - makro na nalezení řetězce

Od: h4ever® odpovědí: 2 změna:

Napsal jsem si pro Word (XP) makro které by mělo najít řetězec Morph.

Můj dotaz je: je to normální, že při spouštění Makra se otevře dialogové okno pro hledání? Jde mi o to, že jsem chtěl najít a vybrat řetězec, aniž by se otevíralo dialogové okno (což vždy trvá déle než když by se neotevřelo). I když jde asi o 100ms, při součtu toto způsobuje nežádoucí prodlevy a tak pochopitelně nechci otevírat okno. Co s tím?

Sub find_Morph()
Selection.Find.ClearFormatting
With Selection.Find
.Text = "Morph"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
End Sub


doplněno 21.08.17 10:50:

Ruším dotaz. otevření okna bylo způsobené něčím úplně jiným co s makrem nesouviselo

 

 

2 odpovědi na otázku
Řazeno dle hodnocení

 

 

figurek*

0x

já bych jen doplnil, že vaše makro je plné balastu a možná právě proto vám způsobuje delší prodlevy. Zkuste promáznout všechny řádky, které končí False.

Vlastnosti výběru jako Format nebo Matchcase jsou přednastavené na hodnotu False a vy je svým makrem přepisujete na hodnotu False. Výsledný efekt takového příkazu není nic víc, než ztráta času.


doplněno 21.08.17 16:11:

ale jistě. Průměrný programátor ví, že VBA je interpretr. To znamená, že příkazový řádek přečte, přeloží a provede, pak přejde na další řádek, který přečte, přeloží a provede atd. Příkazy neprovádí hromadně, ale postupně po jednom, pro všechny nalezené případy. Dále průměrný programátor ví, že příkaz provedený makrem VBA je asi 100x pomalejší, než příkaz zapsaný v binárním kódu systému. A jsou dokonce i takoví průměrní programátoři, kteří ví, že jestliže se takový 100x pomalejší příkaz volá stokrát zasebou, pak nastává desetisícinásobné zpoždění proti systémovému příkazu a z milisekund můžou být desetiny vteřin, i celé vteřiny.

A pokud onen programátor není jen průměrný, pak obvykle zdrojovému kódu dobře rozumí a hned ze začátku se zbaví balastu a nechává po sobě čisto a uklizeno.

Ještě nějaký dotaz?


Průměrný programátor ví, že řádky, které tam jsou navíc jsou v řádu jednotek milisekund (neměřitelné) a nemohou výrazně snížit rychlost programu. Jak jsem už napsal, bylo to způsobeno něčím úplně jiným co způsobovalo vyskočení okna a s VB to neuviselo.


doplněno 21.08.17 17:22:

100 cyklů a ani necekne. Nemám potřebu to dál řešit.

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]