wir haben folgende Probleme:
Eine Excel-Tabelle mit immer der gleichen Anzahl an Zeilen auf einer DIN A4-Seite. Die letzte Zeile auf einer Seite muss immer bestehen bleiben. Nun werden Daten in die Tabelle importiert. Bei einer Zeilenzahl von 65 immer 64 Datensätze, da die letzte Zeile für anderes gebraucht wird und die ja auch nicht versetzt werden darf. Nun kommt es vor, dass in einer Zelle die Zahl der Zeichen bei den importierten Daten über die Spaltenbreite hinausgehen kann. Die Zeichen, die zuviel sind müssen in die Zelle darunter eingesetzt werden und dafür muss eine neue Zeile eingesetzt werden. Dafür schrieben wir ein Makro:
Dim länge As String
Dim t As Integer
Sub test()
t = 16
n = 255
For Each C In Worksheets(1).Range("C16:C18")
länge = C.Text
länge4 = Left(länge, 30)
If länge4 > "" Then
erste = Left(länge, 30) 'ersten 30 Buchstaben
rest = Mid(länge, 31, n) 'alles ab 31
Range("C" & CInt(t) & "").Select
ActiveCell.Value = erste
Rows(ActiveCell.Row + 1).Insert Shift:=xlDown
Range("C" & CInt(t + 1) & "").Select
ActiveCell.Value = rest
End If
t = t + 1
Next C
End Sub
Bei diesem Makro wird jetzt aber eine leere Zeile zuviel eingefügt. Wie bekommen wir die wieder weg? Die letzte Zeile verschiebt sich außerdem jeweils nach unten, wenn vorher eine neue eingefügt wurde. Wie bekommen wir es hin, dass sie dann wieder jeweils eine Zeile höher gesetzt wird, damit z. B. die Zeile 65 die Zeile 65 bleibt? Und unser Makro funktioniert auch nur, wenn wir genau wissen, dass in der Zeile 16 unser Problem auftritt. Wie muss das Makro aber aussehen, damit es selbständig nach allen Zellen sucht, in denen eingefügter Text steht, der länger ist, als die Spaltenbreite es zulässt?
Vielen Dank schon mal für die Hilfe.