Hallo jh,
da der Code von mir kommt, erlaube mir folgende Bemerkungen:
1. Ob die Bedingung zu Beginn oder nach der Do-Loop-Schleife abgefragt wird, spielt in diesem Fall keine Rolle.
2. Die Bestimmung der letzten Zeile, wie im Code dargestellt, erfüllt genau ihren Zweck. Der von dir vermutete Fehler tritt nicht auf.
3. Im ursprünglichen Code verursacht LCase das Problem. Da Daniel offenbar darauf verzichten kann, also eine eindeutige Schreibweise von "hier" hat, gibt es keinen Grund, die Prüfung auf einen Fehler unbedingt beizubehalten. Typenkonflikte können nicht mehr auftreten.
Gruß
Holger
jh schrieb am 01.04.2008 02:08:41:
Hallo,
dein Code ist noch nicht optimal. Es genügt nicht, die
letzte Zeile einmal am Schleifenbeginn zu ermitteln,
weil sie sich bei jedem Einfügen um 2 erhöht. Je nach
Anzahl der eingefügten Zeilen werden dann evtl. Zellen
mit "hier" am Ende des benutzten Bereiches nicht mehr
berücksichtigt. Dafür habe ich in meinem Beispiel die
Variable l, die vor Schleifenbeginn auf die aktuell
letzte Zeile gesetzt und bei jeder Einfügung um 2
erhöht wird. Deshalb gehört auch die Schleifenbedingung
nicht hinter Do, sondern hinter Loop:
Loop Until i > l
Wenn du nicht völlig sicher bist, dass in Spalte A nicht
wieder ein Fehlerwert auftaucht (vielleicht aus einem
Grund, den du jetzt noch nicht siehst), solltest du die
Prüfung mit IsError wie in meinem Beispiel drinlassen.
Zwecks Formatierung ergänzt du nach dem einfügen der
zwei Zeilen folgenden Code:
With Range(Cells(i + 1, 1), Cells(i + 2, 256))
.Font.ColorIndex = xlColorIndexAutomatic
.Interior.ColorIndex = xlColorIndexNone
.Borders(xlEdgeBottom).LineStyle = xlLineStyleNone
.Borders(xlEdgeLeft).LineStyle = xlLineStyleNone
.Borders(xlEdgeRight).LineStyle = xlLineStyleNone
.Borders(xlInsideHorizontal).LineStyle = xlLineStyleNone
.Borders(xlInsideVertical).LineStyle = xlLineStyleNone
End With
Gruß
|