< návrat zpět

MS Excel


Téma: Pomoc s VBA rss

Zaslal/a 28.10.2023 17:51

Zdravím mistři.
Chtěl bych pokud možno pomoci.
Chci pokud zapíšu do listu2 ve sloupci W jedničku, MsgBox s hlášením ANO, NE. ANO- spustí se makro, které vyhledá hodnotu z příslušného řádku sloupce N v Listu1 a smaže data v příslušném řádku sloupec S, T Listu1 a hodnotu ve sloupci S v Listu2 přeškrtne (pokud je problém tak smaže).
NE- procedura se samozřejmě ukončí, ale aby zároveň smazala hodnotu v buňce ve sloupci W (tu jedničku, co celou proceduru vyvolala).
Prosím kód okomentovat

Soubor přikládám. Moc a moc děkuji

Příloha: zip55586_smaz.zip (15kB, staženo 1x)
Zaslat odpověď >

#055588
elninoslov
Neviem, či ste to domyslel. Tam môže nastať množstvo situácií na ktoré treba myslieť. Viacnásobná zmena, iná hodnota ako 1, nekonzistentná oblasť zmeny, nenájde sa hodnota, prázdne N, žiadne dáta, opakovaná zmena pri W pri Nie, ...
Akurát počítam že nebudete filtrovať, lebo potom treba zisťovať rozsah inak.
Příloha: zip55588_smaz.zip (26kB, staženo 4x)
citovat
#055589
avatar
Tak před tímto naprosto smekám. Prostě SUPR PRÁCE!
Ta hodnota tam vždycky je, a vícenásobná změna nebude a pokud se vygenerují data do Listu2, tak tam jsou právě jen s těmito vyplněnými daty. (k tomu aby se ty data opravila). Tímto se zpětně přenese informace o opravě.

Moc děkuji, strašně mi to pomohlo. To bych nezvládl ani za 50let.
Elninoslov je jednička. Velké díky mistře.
:-)citovat
#055590
avatar
Ještě bych přeci něco na @Elninoslov měl.
Koukám, že se makro spustí i když omylem vyplním jedničku do prázného řádku.
Šlo by to nějak ošetřit aby se nezpouštělo pokud je řádek na Listu2 prázdný? (Nebo to navázat třeba na sloupec S, tam jsou taky vždy data pokud je řádek vyplněn).
Omnlovám se, že jsem na toto nevzpomněl.

Děkujicitovat
#055591
elninoslov
Stačí teda v 1. riadku urobiť takúto zmenu
Set rZmena = Application.Intersect(Range(Range("W4"), Cells(Rows.Count, "N").End(xlUp)), Target) 'kontrola změny v dané oblasti
a vyplnenosť dát/riadkov by som určo robil pomocou kontroly posledného údaju v "N", lebo práve "N" hodnota sa bude potom vyhľadávať.

Ak myslíte niečo iné pod výrazom "pokud je řádek na Listu2 prázdný", viac to špecifikujte.

EDIT:
Oprava, musí to byť napr. takto

Set rZmena = Application.Intersect(Range(Range("W4"), Cells(Cells(Rows.Count, "N").End(xlUp).Row, "W")), Target) 'kontrola změny v dané oblasti
Inak by to reagovalo od stĺpca N po stĺpec W. Som sa "upsal" 5citovat
#055592
avatar
Ano, přesně. Pochopil jste to naprosto správně.
To je ono.
Ještě jednou moc děkuji mistře.citovat
#055593
elninoslov
Pozor oprava, mrk vyššie.citovat
#055594
avatar
ANO. Děkuji opravu jsem aplikoval a vše ok.

Mnohokrát děkuji.citovat

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse