Avatar billede magmat Nybegynder
26. september 2007 - 13:12 Der er 11 kommentarer og
1 løsning

autohøjde på flettede celler

Jeg har fundet nednestående makro her på siden og den virker fint for mig.

Makroen autojusterer højden på celler selvom de er flettede.

Dt eneste der er galt er at den kun virker præcis i den celle der er aktiv.

Kan man få den til at løbe f.esk. hele kolonne A igennem og justere højden på alle linierne istedet for kun at justere/køre på den aktive celle.


Makroen er hentet fra dette spørgsmål
http://www.eksperten.dk/spm/607343


Sub AutoFitMergedCellRowHeight()
    Dim CurrentRowHeight As Single, MergedCellRgWidth As Single
    Dim CurrCell As Range
    Dim ActiveCellWidth As Single, PossNewRowHeight As Single
    If ActiveCell.MergeCells Then
      With ActiveCell.MergeArea
            If .Rows.Count = 1 And .WrapText = True Then
                Application.ScreenUpdating = False
                CurrentRowHeight = .RowHeight
                ActiveCellWidth = ActiveCell.ColumnWidth
                For Each CurrCell In Selection
                    MergedCellRgWidth = CurrCell.ColumnWidth + MergedCellRgWidth
                Next
                .MergeCells = False
                .Cells(1).ColumnWidth = MergedCellRgWidth
                .EntireRow.AutoFit
                PossNewRowHeight = .RowHeight
                .Cells(1).ColumnWidth = ActiveCellWidth
                .MergeCells = True
                .RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, _
                CurrentRowHeight, PossNewRowHeight)
            End If
        End With
    End If
End Sub

Den er skrevet af
Jim Rech
Excel MVP
Avatar billede kabbak Professor
26. september 2007 - 15:03 #1
Marker området der skal tjekkes, kør så makroen

Sub AutoFitMergedCellRowHeight()
    Dim CurrentRowHeight As Single, MergedCellRgWidth As Single
    Dim CurrCell As Range, C As Range
    Dim ActiveCellWidth As Single, PossNewRowHeight As Single
    For Each C In Selection.Cells
        C.Select
        If ActiveCell.MergeCells Then
            With ActiveCell.MergeArea
                If .Rows.Count = 1 And .WrapText = True Then
                    Application.ScreenUpdating = False
                    CurrentRowHeight = .RowHeight
                    ActiveCellWidth = ActiveCell.ColumnWidth
                    For Each CurrCell In Selection
                        MergedCellRgWidth = CurrCell.ColumnWidth + MergedCellRgWidth
                    Next
                    .MergeCells = False
                    .Cells(1).ColumnWidth = MergedCellRgWidth
                    .EntireRow.AutoFit
                    PossNewRowHeight = .RowHeight
                    .Cells(1).ColumnWidth = ActiveCellWidth
                    .MergeCells = True
                    .RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, _
                                    CurrentRowHeight, PossNewRowHeight)
                End If
            End With
        End If
    Next
End Sub


NB. ikke testet
Avatar billede magmat Nybegynder
26. september 2007 - 15:28 #2
Den virker ikke helt.
Den laver fejl i følgende linie.

  .Cells(1).ColumnWidth = MergedCellRgWidth

tror jeg nok

Den fjerne fletningen i den linie den står i og går så i stå
Avatar billede kabbak Professor
26. september 2007 - 17:06 #3
Forresten, det har jeg svaret på før, prøv her:
http://www.eksperten.dk/spm/777625
Avatar billede magmat Nybegynder
26. september 2007 - 20:40 #4
ups ,den havde jeg ikke lige set.
Men nu virker det lilge som det skal.

Tak for hjælpen

Skriver du et svar
Avatar billede kabbak Professor
26. september 2007 - 22:08 #5
et svar ;-))
Avatar billede mira96ac Novice
27. september 2007 - 15:26 #6
Det er første gang jeg har set løsningen med flettede celler hvor den også kan tilpasse rækkehøjden nedad hvis der lige pludselig er mindre tekst e.l. i de flettede celler.

Måske jeg kan få lidt hjælp til hvordan man mest gnidningsfrit kan få implementeret denne kode på alle ark i sin workbook således at koden kører ved hver worksheet_deactivate ?

Kan man placere Sub AutoFitMergedCellRowHeight()
i et modul og Public Sub Tilpas()
på hvert enkelt ark ?

Kan man ikke få Excel til selv at finde den afgrænsede range i stedet for man skal specificere den. F.eks. via "ActiveCell.SpecialCells(xlLastCell).Row"

Håber i kan hjælpe.
Avatar billede mira96ac Novice
27. september 2007 - 16:37 #7
Nu har jeg testet lidt mere...

1. Makroen er utrolig langsom hos mig ?
2. Makroen virker fint 2-3 gange på samme ark, men ca. 4 gang går Excel død ?
3. De fleste flettede celler kan autotilpasse rækkehøjden på, men nogle er der er række for meget ? Jeg ved der kan være forskel på nogle celler om hvordan de ser ud på skærmen og hvordan de ser ud når man printer. Derfor kan det være nødvendigt med en ekstra række på skærmen (så passer det ved udprint). Men lige præcis disse celler passer fint ved både udskriv og på skærmen, men alligevel lader makroen en ekstra/tom række være...
Avatar billede kabbak Professor
27. september 2007 - 18:34 #8
mira96ac > Nu er det ikke mig der har lavet makroen, jeg har kun lavet så den kan køre over flere celle, denne del:

Public Sub Tilpas()
    For Each Selle In ActiveSheet.UsedRange.Cells
        If Selle.MergeCells Then
            AutoFitMergedCellRowHeight Selle.Address
        End If
    Next
End Sub

Så hastigheden m.m., angående den anden del, må i spørge programmøren Jim Rech.
Avatar billede mira96ac Novice
27. september 2007 - 21:23 #9
Øhhh

Hvem er Jim Rech ?
Avatar billede mira96ac Novice
27. september 2007 - 21:25 #10
Argh OK
Der fandt jeg navnet...
Avatar billede magmat Nybegynder
30. september 2007 - 13:02 #11
jeg har de samme problemer som Mira, men denne løsning er langt bedre end det jeg havde i forvejen............INGEN TING....
Så jeg er en tilfreds mand :-)
Avatar billede mira96ac Novice
30. september 2007 - 15:12 #12
Helt de samme problemer ?

Går Excel død ?

og laver den en ekstra blank række nogle gange ?

Jeg er enig i at det er den bedste løsning indtil videre. Men desværre kan man jo ikke rigtig implementere den sålænge den især for Excel til at gå ned.....

Vi håber der kommer et klogt menneske som kan løse vores problemer...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester