Avatar billede Peterj Praktikant
08. april 2020 - 14:43 Der er 6 kommentarer

VBA til automatisk rækkehøjde i excel

Hej Alle.

Jeg ved dette spørgsmål har været slået op på siden før, og jeg har forsøgt at bruge de løsninger som er kommet, men det virker ikke helt for mig.

Jeg er en rutineret excel-bruger, men er ikke ret meget bekendt med makroer osv.

Jeg har fået en VBA-kode ind i mit excel-ark, men den virker kun på den ene celle som er markeret i arket, og den kan ikke reducere rækkehøjden, kun forøge rækkehøjden:

Sub automatisk_rækkehøjde()
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

Jeg har brug for at den også kan reducere rækkehøjden, samt at jeg kan definere i koden at den kun skal gøre det for udvalgte områder i arket, fx (B37:L44) og (B100:L240).
Jeg har også brug for at kunne definere rækkehøjderne ud fra hvor mange linjer med tekst der er i en række, sådan at fx 1 linje med tekst skal have en rækkehøjde på 24,75 og 2 linjer med tekst skal have en rækkehøjde på 36,75 osv.
Endelig skal VBA-koden ignorere rækker som ikke er vist på arket, fordi de er skjult af filter-funktionen i excel.

Håber meget der er en excel brain som kan hjælpe...
Avatar billede jens48 Ekspert
08. april 2020 - 20:23 #1
Er det ikke en funktion i stil med denne du er ude efter?

  Range("B37:L44", "B100:L240").EntireRow.AutoFit
Avatar billede Peterj Praktikant
08. april 2020 - 22:13 #2
Hvis jeg indsætter den linje som en selvstændig sub, så ændres de nævnte rækker, men de får alle en rækkehøjde på 15 selvom nogle af de flettede celler indeholder 2 eller flere linjer med tekst.
Avatar billede jens48 Ekspert
09. april 2020 - 19:41 #3
Det virker mærkeligt. jeg prøvede det af her og det virkede OK. Men prøv med:

Sub RowHight()
Range("B37:L44", "B100:L240").Select
With Selection
  .WrapText = True
  .EntireRow.AutoFit
End With
End Sub
Avatar billede Peterj Praktikant
10. april 2020 - 09:20 #4
Jeg prøver lige om det kan komme til at virke, tak for koden:)
Avatar billede store-morten Ekspert
10. april 2020 - 10:02 #5
#jens48. Prøv på flettede celler med om brudt tekst.

#peterj. Hvordan ændres cellerne? Ved indtastninger?
Avatar billede store-morten Ekspert
10. april 2020 - 10:47 #6
Er der kun en gruppe med flettede celler pr. række?
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