Kategórie
Excel

Textové polia v Exceli: ako vymazať prázdne textové polia naraz?

Len nedávno som sa stretol s veľmi zvláštnym problémom v Exceli. Otvorenie Excel súboru mi trvalo asi 5 minút, akákoľvek zmena v ňom ďalšie minúty naviac. Jednoducho, ten Excel súbor bolo potrebné optimalizovať a vymazať všetko nepotrebné/redundantné. Vedel som, že 8 Mb súbor je dosť veľa na Excel, ale to predsa nemôže byť problém …

Až po ďalšej analýze súboru som zistil, že v každom hárku (bolo ich 14) sa nachádza množstvo textových polí, ktoré sú prázdne. Za výrazom množstvo si predstavte tisícky textových polí.

No ale čo s tým ďalej?

Zobraziť všetky textové polia

Ak chcete naraz vidieť, koľko textových polí sa nachádza vo vašom aktívnom hárku, potom v menu, v možnosti „Home“ kliknite na „Find & Select“ a následne „Selection pane…“. Vopred sa ospravedlňujem za navigáciu z anglického rozhrania, preto rovno pridávam aj obrázok:

Vybrať všetky textové polia naraz

Ak chcete naraz vybrať všetky textové polia v hárku, môžete to uskutočniť dvomi spôsobmi:

1. spôsob – klávesová skratka

Stlačte CTRL + G a z menu vyberte Objekty. Takto vám označí všetky objekty v hárku – grafy, obrázky, textové polia.

2. spôsob – výber z menu

V menu, v možnosti „Home“ kliknite na „Find & Select“ a následne „Selection Objects“. Následne len označte oblasť v Exceli. Ak sa v nej nachádzajú nejaké objekty, označia sa Vám. Ak ste netrafili oblasť, musíte skúšať ďalej.

Vymazať všetky textové polia

Ak už máte označené textové polia, ktoré chcete odstrániť, potom stačí stlačiť už len Delete na klávesnici a považovať za vybavené. Ale čo v mojom prípade, ak sa v hárku nachádzajú tisícky textových polí a proces označenia trvá večnosť? Potom pomôže už len jednoduchý skript vo VBA – skúste to so mnou.

Ako vymazať prázdne textové polia cez VBA?

Postup je jednoduchý, stačí len kliknúť v menu na kartičku „Developer“ a v nej na Visual Basic.

V programovacom jazyku VBA stačí len vytvoriť nový modul a skopírovať tam nasledovný kód:

Sub RemoveEmptyTextBoxes()
    Dim shp As Shape
   
    ' Loop through all shapes in the active sheet
    For Each shp In ActiveSheet.Shapes
        ' Check if the shape is a TextBox and if its text is empty
          If shp.Type = msoTextBox Then
    If shp.TextFrame.Characters.Text = "" Then
      ' Delete the TextBox:
      shp.Delete
    End If
  End If
    Next shp
End Sub

Tento kód nám nájde prázdne textové pole v aktívnom hárku, označí ho a vymaže rad za radom. Ak máte prázdne textové polia vo viacerých hárkoch, potom stačí prejsť len do ďalšieho hárku a spustiť makro nanovo.

Na záver pridávam aj Excel súbor tu:

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *