Excel Makró / VBA kód alkalmazása az összes munkalapra.

Excel Makró / VBA kód alkalmazása az összes munkalapra.
2021-08-03T21:20:21+02:00
2021-08-04T00:10:19+02:00
2022-10-15T21:26:20+02:00
Szájmon187
Sziasztok!

A kereséseim eredménytelenül zárultak, így kénytelen vagyok kérdezni.

Van egy jó kis makróm, ami az adott munkalap minden frissítésekor/változásakor elrejti az A oszlop 1-es és 20-as sora közötti összes sort, ahol a cellaérték 0. 

A problémám, hogy szeretném ezt alkalmaztatni (kiterjeszteni) a teljes munkafüzetre. Ugyanis 400 munkalapom van amiből az első 3 ban az A oszlop adott cellái egymástól függnek (képlettel), de a többi 397 munkalap A oszlopának adott cellái mind ugyanannak a munkalapnak az adott celláíra hivatkoznak. Így értelemn szerüen ha az "első-kiinduló" cellába 0-át írok, az összes képlet 0-ra fut, és elrejtődik az adott sor mind a 400 munkalapon. Csak ehez jelenleg végig kéne másolnom a kódot az összes "Munka1" objects-től a "Munka400" ig. És várható további bővülés is, ahova mindíg másolni kellene. Ezt szeretném megúszni valahogy. Csak nemtudom sehogyse ezt a kódot kiterjeszteni az adott munkafüzet - mindíg az - összes aktuális munkalapjára.

A VBA kód amit használok:

Private Sub Worksheet_Change(ByVal Target As Range) Dim xRg As Range Application.ScreenUpdating = False For Each xRg In Range("A1:A20") If xRg.Value = "0" Then xRg.EntireRow.Hidden = True Else xRg.EntireRow.Hidden = False End If Next xRg Application.ScreenUpdating = True End Sub

-------------------------------------------------------------------------------------------------------------
Előre is köszönöm!
Mutasd a teljes hozzászólást!
Szia!
Végig kell menni az összes munkalapon For --- Each ciklussal.

Dim sh As Worksheet Dim xRg As Range Application.ScreenUpdating = False For Each sh In Worksheets For Each xRg In sh.Range("A1:A20") If xRg.Value = "0" Then xRg.EntireRow.Hidden = True Else xRg.EntireRow.Hidden = False End If Next xRg Next Application.ScreenUpdating = True
Nem tudom, hogy szerencsés dolog-e a Change eseménykezelőbe tenni az összes munkalap sorainak változtatását - egyrészt időigényes, másrészt valahányszor megváltoztatsz egy cella értéket az első lapon, ismételten lefut a sorok változtatása.
Én inkább külön makróba tenném és billentyű kombinációt használnék az indításra.
Üdv.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd