Nejste přihlášen/a.
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
Ruším dotaz. otevření okna bylo způsobené něčím úplně jiným co s makrem nesouviselo
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.
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.
100 cyklů a ani necekne. Nemám potřebu to dál řešit.
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.