Excel - letzte eingefügte Zeile löschen

  • #1
J

jorx

Neues Mitglied
Themenersteller
Dabei seit
01.04.2005
Beiträge
4
Reaktionspunkte
0
Hallo,

vielleicht kann uns jemand helfen:
Es werden Daten in eine Tabelle importiert. 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?

Vielen Dank schon mal für die Hilfe.
 
  • #2
Kann denn wirklich niemand helfen? Wir benötigen dringend Hilfe  :'(
 
  • #3
Hi
Du könntest noch eine If Then Abfrage einbauen.

If rest <> Then
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

Wenn rest eine leere Zeichenkette enthält, muss diese ja nicht eingetragen werden ;)
 
  • #4
Hallo,

danke Fizbin. Leider half es mir noch nicht. Vielleicht baute ich deine Zeilen noch nicht an der richtigen Stelle ein.
Setze ich sie nach dem ersten End If ein, so werden zusätzlich etliche weitere Zeilen in der Tabelle eingetragen.
Setze ich sie nach Next C ein, so erhalte ich das selbe Ergebnis wie vorher auch.

Grüße
Jörg
 
  • #5
Probier das mal so:

Code:
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
If rest <>  Then->#######
  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->#######
End If
t = t + 1
Next C

End Sub
 
  • #6
Hallo Fizbin,

vielen Dank, jetzt funktioniert das. Weißt du auch, was ich einstellen muss für den Fall, dass unser Problem nicht nur in Zelle C16 auftritt, sondern das Makro alle die Zellen selbständig sucht, in der die Zeichenzahl über die Spaltenbreite hinausgeht?

Vielen Dank noch mal.

Grüße
Jörg
 
  • #7
Hallo,

das letzte von mir angesprochene Problem konnte ich selbst lösen. Ich trug einfach bei t=1 ein und
bei Range(C1:C2000)
und nun durchsucht er die Spalte C von Zeile 1 bis 2000.

Vielen, vielen Dank noch mal.

Grüße
Jörg
 
Thema:

Excel - letzte eingefügte Zeile löschen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben