VBATools

Auto dopasowanie wysoko艣ci do tekstu kom贸rek scalonych

by on May.20, 2011, under Excel, Porady

Excel posiada mo偶liwo艣膰 scalenia kom贸rek, jednak偶e nie radzi sobie z ich zarz膮dzaniem. W przypadku jednej kom贸rki jest to prosta sprawa. Funkcja auto dopasowania wysoko艣ci, szeroko艣ci, zawijania tekstu jest elementarna ale dla kilka cell zagregowanych razem jest ju偶 problem.

Poni偶sza procedura umieszczona w module ThisWorkbook pozwoli na automatyczne dobranie wysoko艣ci kom贸rek do tekstu. Oczywi艣cie wa偶n膮 rol臋 odbiera tutaj rodzaj czcionki. Przydatne jest to g艂贸wnie w przypadku tekstu, opisuj膮cego pola arkusza dla r贸偶nego rodzaju formularzy Excelowych.

Private Sub Worksheet_Change(ByVal Target As Range)
'Mod by MVP OShon from VBATools.pl
Dim NewRwHt As Single
Dim cWdth As Single, MrgeWdth As Single
Dim c As Range, cc As Range
Dim ma As Range, wysokosc As Currency

With Target
 wysokosc = .RowHeight
 If .MergeCells And .WrapText Then
 Set c = Target.Cells(1, 1)
 cWdth = c.ColumnWidth
 Set ma = c.MergeArea
 For Each cc In ma.Cells
  MrgeWdth = MrgeWdth + cc.ColumnWidth
 Next
 If wysokosc > c.RowHeight Then Exit Sub
   Application.ScreenUpdating = False
   ma.MergeCells = False
   c.ColumnWidth = MrgeWdth
   c.EntireRow.AutoFit
   NewRwHt = c.RowHeight
   c.ColumnWidth = cWdth
   ma.MergeCells = True
   If NewRwHt > wysokosc Then
     ma.RowHeight = NewRwHt
   Else
     ma.RowHeight = wysokosc
   End If
  cWdth = 0: MrgeWdth = 0
  Application.ScreenUpdating = True
 End If
End With
End Sub

(c) Shon Oskar 鈥 www.VBATools.pl

Wszelkie prawa zastrze偶one. 呕adna cz臋艣膰 ani ca艂o艣膰 tego artyku艂u nie mo偶e by膰 powielana ani publikowana bez zgody autora.

:, , , ,

6 Comments for this entry

  • 艁ukasz Kowal

    Bardzo fajna procedura!

    Zmieni艂bym tylko warunek

    If NewRwHt > wysokosc Then
    ma.RowHeight = NewRwHt
    Else
    ma.RowHeight = wysokosc
    End If

    na

    If NewRwHt wysokosc Then
    ma.RowHeight = NewRwHt
    Else
    ma.RowHeight = wysokosc
    End If

    wtedy korekta wysoko艣ci wiersza dzia艂ac b臋dzie w obie strony.

  • Marcin

    Witam,
    nie jestem pewny czy robi臋 wszystko dobrze. Nie znam si臋 na tym. Pierwszy raz pr贸buj臋 zastosowa膰 makro.

    wywo艂uj臋 VBA przez ALT+ F11 klikam na ThisWorkbook przeklejam kod kt贸ry podali艣cie powy偶ej. Zapisuj臋 jako .xlsm. Nic si臋 nie zmienia.

    Chcia艂bym 偶eby wysoko艣膰 wiersza scalonych kom贸rek dostosowywa艂a si臋 automatycznie do zawarto艣ci tekstu.

    czy co艣 pomin膮艂em, albo powinienem zrobi膰 inaczej ?

    • Profile photo of vbatools
      vbatools

      Procedura dzia艂a w zakresie wykonywania czynno艣ci. Czyli dopasowuje na bie偶膮co, a nie szuka gdzie dopasowa膰 w obszarze arkusza gdzie nie realizujemy 偶adnych zmian.

  • Kole艣

    Cze艣膰, bardzo podoba mi si臋 idea takiego makra. Pytanie: jak mo偶na wykorzysta膰 je do og贸lnego u偶ytku? Czy mo偶na je wklei膰 do pliku PERSONAL?

    • Profile photo of vbatools
      vbatools

      Niestety nie. Jest to procedura zdarzeniowa, kt贸ra realizuje czynno艣ci na aktywnym arkuszu, a wi臋c kod musi by膰 przyklejony do pliku docelowego.

Leave a Reply

Recently Active Members

Profile picture of vbatools
Profile picture of Karol Stilger
Profile picture of marcinmachalowski
Profile picture of Joanna Subik
Profile picture of Anorak
Profile picture of programistaaccess
Profile picture of piotrpawlik
Profile picture of Emil Wasilewski
Profile picture of kicekpicek
Profile picture of coldfusion
Profile picture of Gosia Borz臋cka
Profile picture of lukaszch
Profile picture of itadministracja
Profile picture of farbenia
Profile picture of 艁ukasz Ka艂u偶ny
Profile picture of kabzinski
Profile picture of rtynski
Profile picture of leszekbetlinski
Profile picture of Iv
Profile picture of Justyna Spycha艂a