Stránka 1 z 1

excel vba automaticka vyska radku sloucenych bunek

Napsal: 20 bře 2018 10:51
od zutano
Dobrý den všem,
mám dokument v excelu do kterého se dopisují poznámky. Jelikož jsou ve sloučených buňkách, tak nejde upravovat automaticky výška řádku. Našel jsem makro, které to umí i ve sloučených buňkách. Bohužel toto makro funguje pouze na aktuálně vybrané buňce. Já bych potřeboval, aby zkontrolovalo více buněk a upravilo ty menší.

Podle mě by to mělo jít nějak jednoduše, zkoušel jsem několik postupů, bohužel jsem to nerozchodil. Dodávám přílohu s podrobnějším infem a makrem, které podle mě stačí jen upravit.

Budu rád za jakoukoliv pomoc.
Díky

Re: excel vba automaticka vyska radku sloucenych bunek

Napsal: 20 bře 2018 12:06
od atari
Jsem odpůrce slučování buněk, nejsou potřeba, stačí jen graficky přizbůsobit buňky. Již jsem tady psal, jaké to způsobuje problémy. (Například Tobě teď s makrem.)

Doporučuji zrušit slučování buněk a rozšířit sloupec A na celou šířku poznámky.
A nebo sloupec "A" nerozšiřovat, a vnitřní ozhraničení nastavit na bílou, zrušit zalamování textu, a používat ALT+ENTER.

V obou případech to bude vypadat stejně jako to máš teď.

Já tedy rozhodně ladit makro na sloučených buňkách odmítám. Možná tu však někoho najdeš ...

Re: excel vba automaticka vyska radku sloucenych bunek

Napsal: 20 bře 2018 12:57
od zutano
Vím, že slučování buněk komplikuje život. Bohužel jsou nad poznámkami tabulky s daty, takže nemohu roztáhnout sloupec A na celou šířku.

Když jsem zkusil druhou variantu, tak ve chvíli kdy dám ALT+ENTER, tak mi to automaticky vrátí "zalamování textu". Nevím jak udělat, aby mi to automaticky nevracelo a jestli je to vůbec možné (mám office 2016). Jsem schopen mít v jedné buňce jeden řádek textu, ale ne víc. Pokud dělám něco špatně, tak jestli můžeš, tak to prosím uprav v příloze podle tebe. Stačí třeba jen jedna buňka.

Re: excel vba automaticka vyska radku sloucenych bunek

Napsal: 20 bře 2018 17:45
od Grimm
Můžeš se inspirovat na WALL

Re: excel vba automaticka vyska radku sloucenych bunek

Napsal: 21 bře 2018 08:04
od zutano
Díky za tip na Wall. To řešilo výšku řádků, tu už mám vyřešenou. Jen se mi jednalo o to, aby to prohledávalo více řádků a upravilo to všechny.

Něco jsem ještě zkoušel a nakonec jsem to zprovoznil, tak jak jsem si představoval. Musel jsem udělat několik úprav i původního makra kvůli chybě v cyklu a kvůli zamknutému listu. Přikládám kód a přílohu, pokud by to někdo taky v budoucnu potřeboval :)

Code: [Vybrat vše] [Zobrazit/Skrýt] [Download] (vyska_radku.vb)
  1. Sub vyska_radku()
  2.   Dim CurrentRowHeight, MergedCellRgWidth, ActiveCellWidth, PossNewRowHeight As Single
  3.   Dim CurrCell As Range
  4.   Dim radek As Range
  5.   Set radek = ActiveWorkbook.Sheets("uvod").Range("A23")
  6.    
  7.   Sheets("uvod").Unprotect Password:="h"  'odemkne list
  8.    
  9.   Do Until IsEmpty(radek)
  10.     radek.Select
  11.     If ActiveCell.MergeCells Then
  12.         With ActiveCell.MergeArea
  13.             'Jsou sloucene bunky na jednom radku a maji zalamovani textu?
  14.             If .Rows.Count = 1 And .WrapText = True Then
  15.                 Application.ScreenUpdating = False
  16.                 CurrentRowHeight = .RowHeight
  17.                 ActiveCellWidth = ActiveCell.ColumnWidth
  18.                     For Each CurrCell In Selection
  19.                         MergedCellRgWidth = CurrCell.ColumnWidth + MergedCellRgWidth
  20.                     Next
  21.                 .MergeCells = False
  22.                 .Cells(1).ColumnWidth = MergedCellRgWidth ' na tomto řádku se zastaví kod při třetí smyčce
  23.                 .EntireRow.AutoFit
  24.                 PossNewRowHeight = .RowHeight
  25.                 .Cells(1).ColumnWidth = ActiveCellWidth
  26.                 .MergeCells = True
  27.                 .Locked = False     'odemkne bunky
  28.                 .NumberFormat = "@" 'nastavi format bunky "text"
  29.                 .RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, CurrentRowHeight, PossNewRowHeight)
  30.                 MergedCellRgWidth = 0 ' kvůli chybě při opakování přídán tento řádek
  31.             End If
  32.         End With
  33.     End If
  34.     Set radek = radek.Offset(1, 0)
  35.   Loop
  36.     Sheets("uvod").Range("A23").Select
  37.     Application.ScreenUpdating = True
  38.    
  39.     Sheets("uvod").Protect Password:="h", AllowFormattingRows:=True, AllowFormattingCells:=True   'zamkne list a povoli upravit vysku radku a formatovani bunek
  40. End Sub

Re: excel vba automaticka vyska radku sloucenych bunek

Napsal: 21 bře 2018 20:37
od atari
Tady máš ještě stránky kde se řeší ten autofit, že ve sloučených buňkách nefunguje a jak to lze řešit: https://proexcel.cz/sloucena-bunka/

Píše to hezky: "Automaticky zalomený text zpravidla Excel zvládá, u ručně zalomeného textu čekejte obtíže, a u sloučených buněk už narazí kosa na kámen."

Jinak to ALT+ENTER je příkaz na zalomení řádku, a jakmile to uděláš, tak si to Excel pamatuje a tu buňku pak označí "zalamovat text"

Re: excel vba automaticka vyska radku sloucenych bunek

Napsal: 22 bře 2018 08:35
od guest
Jó, komu není rady :-)

Re: excel vba automaticka vyska radku sloucenych bunek

Napsal: 22 bře 2018 10:20
od atari
Já bych tu poznámku tedy řešil dvouřádkově bez sloučených buněk. A ještě to šetří místo. Vzor v příloze. (Je to bez předělání makra, což je však velmi jednoduchá úprava)