Clever-Excel-Forum

Normale Version: Anpassung Zeilenhöhe wenn > x
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo, liebe Excel-Freunde

Ich wäre euch unheimlich dankbar, wenn ihr mir bei einem Problem helfen könntet...

Mit einem Konverter lese ich diverse PDF-Tabellen in eine Excel-Tabelle ein. Leider übernimmt mir der Konverter NICHT die Seitenumbrüche, weshalb ich diese Umbrüche durch die immer wiederkehrenden Kopfzeile per Makro automatisch erstelle. Soweit, so gut!

Nun kommt es oft vor, dass das ursprüngliche Seitenlayout durch unterschiedliche Zeilenhöhen nicht übereinstimmt und oft 4-5 Zeilen auf der nächsten Page landen...

Da gewisse Zeilenhöhen überdurchschnittlich hoch sind, habe ich ein Drehfeld, dass mir diese überdurchschnittlichen Zeilenhöhen reduziert.
Mit folgendem Code passe ich diese Zeilienhöhen an.

Das Problem ist jedoch, dass bei 2-3000 Zeilen diese Schleifenlösung unheimlich langsam ist!

Habt ihr eine Idee, wie man diese effezienter lösen kann?

Vielen lieben Dank für eure Hilfe!

Christian

Code:
'Zeilenabstand
Private Sub SpinButton_Zeilenabstand_Change()
Dim lnglastrow As Long
Dim lngI As Integer
Dim lngZeilenhöhe As Integer

If SheetExists("LV_Import") = False Then MsgBox "Kein Leistungsverzeichnis vorhanden", , "Fehler": Exit Sub

With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With

lnglastrow = ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row + 10

'Grössere Zeilenabstände bei Haupt- und Nebenpositionen
With Sheets("LV_Import").Range("D2:D" & lnglastrow)
    For lngI = 1 To lnglastrow
    If .Rows(lngI).RowHeight > 15 Then
    lngZeilenhöhe = .Rows(lngI).RowHeight
    .Cells(lngI, 1).RowHeight = lngZeilenhöhe + SpinButton_Zeilenabstand.Value
    End If
    Next lngI
End With

With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With

End Sub
Hallöchen,

solange Du zeilenspezifisch Zeilenhöhen festlegen willst, musst Du alle entsprechenden Zeilen durchgehen und das dauert eben.

Schneller wäre nur so was
Cells.Select
Cells.EntireRow.AutoFit
oder besser noch die Festlegung einer einheitlichen Zeilenhöhe. AutoFit muss eigentlich auch jede Zeile auf eine optimale Höhe prüfen.