< návrat zpět

MS Excel


Téma: spuštění makra změnou buňky rss

Zaslal/a 23.6.2016 17:35

Ahoj, prosím o pomoc s VBA kodem.

Mám v bunce E3 seznam s cca. desítkou produktů. Potřeboval bych při každé změně produktu (hodnoty v bunce E3) spustit navazující makro. V současnosti mám VBA kod v této podobě:

If [E3] = "Produkt1" Then skryti_radku1
If [E3] = "Produkt2" Then skryti_radku1
atd. atd....

Zdá se mi však, že čím více produktů v seznamu mám a čím více řádků je v makru pro vyvolání makra "skrytí_radku1", tím je proces pomalejší.

Díky předem za pomoc.

Zaslat odpověď >

#031847
elninoslov
Lebo to je zlé riešenie. Čím neskorší produkt, tým viac kontrol bunky E3,a pri každej sa prestupuje z makra do listu (najpomalšia vec).
Čiže na začiatku testov si do premennej uložte hodnotu bunky E3. a testujte premennú.
ALE.
Lepšie bude, ak nebudete testovať po jednom produkte, ale dáte vyhľadať Application.Match alebo WorksheetFunction.Match tú hodnotu bunky v zozname produktov (ten predsa musíte mať, keď ho máte načítaný v bunke E3), a získate index produktu voči zoznamu. Tento index môžete použiť ako parameter procedúry, v ktorej sa bude makro vetviť podľa produktov napr. v konštrukcii Select Case.

Možností bude viacej, ale takýto popis je na riešenie absolútne nedostatočný. Pridajte podstatne viac informácií, počet produktov, počet je ne/menný, makro má každý produkt rovnaké, alebo iné. Je vôbec makro potrebné ? Ak napr. iba načítate z inej tabuľky údaje, dá sa to vzorcami. V príklade voláte rovnaké makro pre oba uvedené produkty .... atď.

Najlepšie urobíte, ak vložíte prílohu.citovat
#031853
avatar
Dobrý den,
Děkuji za snahu. VBA kody tvořit neumím tudiž první dva odstavce Vaší odpovědi mi nic moc neříkají :-)

Dělám si takovou analýzu prodejních dat a jelikož jde o citlivé data, nechci je zveřejnit. Přikládám aspoň screen jak vypadá část listu a o co mi jde.

V buňce E3 je seznam, který obsahuje názvy různých skupin produktů (v současnosti 7 skupin, v dohledné době se nebudou rozšiřovat). Po zvolení určité skupiny se do buněk E11 - E31 zobrazí přišlušný počet produktů dané skupiny (tento počet je různý, na obrázku jsou 4 (E11 - E14) ale mohou být až E11-E31). Co potřebuji je, že při jakékoliv změně hodnoty v seznamu (E3) a zobrazení možných produktů v oblasti E11-E31, makro skryje všechny prázdné řádky z této oblasti. Proč to potřebuji? Protože jak je vidět na obrázku, na první oblast dat navazuje oblast dat druhá, kde si v buňce E35 pomocí seznamu mohu zvolit produkt, který se objevil v oblasti E11-E31 a analyzovat ho hlouběji. Každý produkt má totiž ještě libovolný počet forem balení. A i zde potřebuji po změně buňky v E35 skrýt všechny prázdné řádky v oblasti E39:E54. Cílem tedy je, aby to nějak vypadalo... Předpokládám, že počty produktů i forem balení se budou nadále rozšiřovat a velké prázdné oblasti by nevypadaly pěkně.

Přikládám ještě použité makro "skrytí_radku1" na které se odkazovalo původní VBA kod.


Sub skryti_radku1()

Application.ScreenUpdating = False
Sheets("Quick View_v2").Select
Rows("11:31").Select
Selection.EntireRow.Hidden = False


colonne B (colonne masquée)
Dim plage As Range, c As Range
Set plage = [E11:E31]
For Each c In plage
If c.Value = "" Then
c.EntireRow.Hidden = True
Else
c.EntireRow.Hidden = False
End If
Next c
Cells(3, 5).Select

End Sub


Moc Vám děkuji za případné řešení.
Příloha: zip31853_bez-nazvu.zip (38kB, staženo 24x)
citovat
#031952
avatar
Ahoj, prosím, dokáže mi někdo poradit? Děkujicitovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje