Tradiční algoritmy k procházení oblastí jako FOR EACH cyklus případně FOR cyklus procházející kolekci CELLS listu jsou pro velké oblasti buněk velmi neefektivní. Potřebujete-li často procházet řádově desetitisíce až miliony buněk v Excelu, využijte následující algoritmus.
Postup je jednoduchý: oblast buněk (objekt Range) uložíte do proměnné Variant --> ta bude automaticky přealokována na dvoudimenzionální pole, které bude svou velikostí odpovídat velikosti původní oblasti buněk - toto dvourozměrné pole následně projdete dvěma FOR cykly (pro řádky, sloupce). V poli budou uloženy hodnoty z původní oblasti buněk.
Tento postup je výrazně rychlejší, protože nedochází k manipulaci s celými objekty jako např. u FOR EACH cyklu, ale pracuje se jen s hodnotami buněk...
Sub SelToArray()
Dim x As Variant
Dim r As Long, c As Integer ' r pro radky, c pro sloupce
x = Selection
For r = 1 To UBound(x, 1)
For c = 1 To UBound(x, 2)
x(r, c) =Rnd
Next c
Next r
Selection = x
End Sub
Procedura projde vyznačenou oblast buněk a do všech buněk vygeneruje náhodná čísla. Ve vnitřním cyklu samozřejmě může být jakákoliv jiná manipulaci s hodnotami buněk, jakékoliv výpočty apod...
Chcete toto a další pokročilá řešení zakomponovat do svých programů ve VBA? Kontaktujte nás.