< návrat zpět

MS Excel


Téma: Výška buňky rss

Zaslal/a 24.2.2015 12:33

Ahoj asi jde o triviální problém, nicméně stále se mi nedaří to rozlousknout. Ve formuláři zadávám do textboxu text, který se mi vkládá do sloučených bunek F15:G15. Podle délky zadaného textu potřebuji automaticky upravit výšku bunky a text zalomit. Funguje mi to v případě, že zadávám výšku pevně, ale příkaz AutoFit mi excel proste nesežvejká, což mi nejde do hlavy. Děkuji za rady. Zkoušel jsem to následovně:
Private Sub TextBox1_Change()
Sheets("List1").Range("F15:G15").WrapText = True
Sheets("List1").Range("F15:G15").Rows.AutoFit
'Sheets("List1").Range("F15:G15").Rows.RowHeight = 30
End Sub

Zaslat odpověď >

Strana:  1 2   další »
#023834
avatar
Autofit skutečně u sloučených buněk nefunguje. Nastavovat buď ručně nebo makrem.

Kdysi jsem makro na to psal (neumím ho najít):

Podstatou bylo zkopírování obsahu do vhodné buňky, nastavit formátování podle zdroje a šířka sloupce podle šířky sloučené buňky, row.autofit, změřit výšku, nastavit výšku hledaného řádku a uklidit.citovat
icon #023838
eLCHa
Jednoduchý trik:
Vyberte si sloupec, který skryjete.
Ve stejném řádku naformátujte v tomto sloupci buňku stejně, jako máte sloučené buňky - v podstatě zkopírujte formát, ale jen do jedné buňky.
Sloupec skryjte.
Do této buňky vložte také hodnotu z textboxu.

Např.
A1:B1 - sloučené
sloupec C skrytý
Private Sub Test()
Range("A1").Value = "Test" & vbLf & "Test"
Range("C1").Value = Range("A1").Value
Range("A1").EntireRow.AutoFit
End Sub
citovat
#038670
avatar

eLCHa napsal/a:

Jednoduchý trik:
Vyberte si sloupec, který skryjete.
Ve stejném řádku naformátujte v tomto sloupci buňku stejně, jako máte sloučené buňky - v podstatě zkopírujte formát, ale jen do jedné buňky.
Sloupec skryjte.
Do této buňky vložte také hodnotu z textboxu.

Např.
A1:B1 - sloučené
sloupec C skrytý
Private Sub Test()
Range("A1").Value = "Test" & vbLf & "Test"
Range("C1").Value = Range("A1").Value
Range("A1").EntireRow.AutoFit
End Sub


Proč ten text kopírovat do buňky? CO tam udělá? A navíc se v ní chová jako běžný text,ne?citovat
#038671
avatar
To preto, aby ste mal rovnako naformátovanú rovnakú hodnotu v bunke, ktorá nie je (!) zlúčená. A v tejto pomocnej bunke urobíte AutoFit, lebo AutoFit funguje iba na nezlúčených bunkách. Ten AutoFit nastaví ale najvyššiu výšku podľa celého riadku. Ak by to bol problém, tak použite nie skrytý stĺpec, ale skrytý list, kde nebudú vedľa iné hodnoty, ale len skopírovaná tá ktorej výšku potrebujete zistiť. Tú výšku si potom AutoFit-e prečítate a nastavíte ju na pôvodnú zlúčenú bunku.citovat
#038688
avatar
A ten autofit se tam zadává jak?citovat
#038689
avatar
myslel jsem že vyzraju a udělal jsem si ten skrytý slupec s kopírováním dat ze sloučených buněk. Použil jsem na skrytou bunku standardní příkaz excelu přizpůsobit výšku bunky dostzupný na standardním pásu karet "domů". Blbý je, že po změně textu se bunka pak nepřenastaví do nové výšky.. :-(citovat
#038690
avatar
Prečo by to nefungovalo. Tu som použil skrytý list na ukážku. A 2 oblasti, ktoré sa menia.
Příloha: zip38690_zmena-vysky-zlucenej-bunky.zip (20kB, staženo 1x)
citovat
#038698
xlnc
https://proexcel.cz/sloucena-bunka/citovat
#038720
avatar
elninoslov

Já se omlouvám. S excelem děláj roky. Občas se hecnu k záznamu makra. Ale tohle jsem prostě fakt nějak nepochopil celkově... Můžeš mi s tím nějak víc pomoct prosím? Nebo někdo? žádný příkaz autofit nikde neumím najít. Vůbec jsem nějak mimo. Dělám formuláře poměrně obsáhlé... už jsou vlastně hotové, několik listů (6) a ty stacionárně velké políčka mi nevyhovují, potřebuju aby se fakt měnily výškově podle textu. Prosím pomozte mi s tím někdo. Vláďacitovat
#038723
avatar
Vo VBA je skrytý list "Pomoc", ktorý má nastavenú vlastnosť Visible na xlSheetVeryHidden, preto ten list nevidíte. Zmente si to na xlSheetVisible.
Keď vo VBA kliknete pravým na Forms - UserForm1 - View Code, nájdete tam tento kód:
Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub TextBox1_Change()
Dim Vyska As Single

With wsPomoc.Cells(15, 6)
.Value2 = TextBox1.Text
.EntireRow.AutoFit
Vyska = .RowHeight
End With

With wsData.Cells(15, 6)
.Value2 = TextBox1.Text
.RowHeight = Vyska
End With
End Sub

Private Sub TextBox2_Change()
Dim Vyska As Single

With wsPomoc.Cells(20, 3)
.Value2 = TextBox2.Text
.EntireRow.AutoFit
Vyska = .RowHeight
End With

With wsData.Cells(20, 3)
.Value2 = TextBox2.Text
.RowHeight = Vyska
End With
End Sub


Funkčnosť tu už bola popísaná niekoľkokrát. Čo k tomu viac napísať? V TextBoxe stlačíte klávesu, napíše sa písmeno, vyvolá to metódu Change daného TextBoxu. V nej sa aktuálna hodnota Textboxu prenesie do pomocnej bunky v pomocnom liste (táto bunka má rovnakú šírku ako celá zlúčená oblasť o ktorú ide, ale len jednoriadkovú výšku), formát bunky pomocnej a zlúčenej je rovnaký, nastavené zalomenie. V pomocnej bunke sa teda potom vyvolá AutoFit
...
.EntireRow.AutoFit
...

teda sa upraví na požadovanú výšku. Táto výška sa potom prečíta a podľa nej sa upraví aj výška zlúčenej oblasti.

Každopádne je to dosť špecifické súbor od súboru, použitie od použitia, druh zlúčenia od druhu zlúčenia ...
Príloha?

Stále hovoríme o Autofit-e jednoriadkovej zlúčenej oblasti. Nie o viacriadkovej. Tam by to bolo zložitejšie.

Ak myslíte "formulárom" list a nie UserForm, tak to bude ešte zložitejšie, lebo treba ošetrovať veľa stavov (zmazanie viac buniek naraz, nesúvislá oblasť a pod...), a to sa mi moc nechce ...citovat

Strana:  1 2   další »

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura III

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

Aktivní diskuse