letzte Zeile wieder löschen

Bild

Betrifft: letzte Zeile wieder löschen
von: Jörg
Geschrieben am: 04.04.2005 12:02:35
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 in der Zelle 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.
Bild

Betrifft: AW: letzte Zeile wieder löschen
von: Ceyser Soze
Geschrieben am: 04.04.2005 13:33:28
Hi,
ich habe das ganze mal etwas umgestellt...

Sub test2()
Dim intZeile As Integer
For intZeile = 18 To 16 Step -1
    erste = Left(Cells(i, 3), 30)
    rest = Mid(Cells(i, 3), 31, 255)
    Cells(i, 3) = erste
    Cells(i, 3).Offset(1, 0).Insert
    Cells(i + 1, 3) = rest
Next i
End Sub

Gruß
CS
Bild

Betrifft: AW: letzte Zeile wieder löschen
von: Jörg
Geschrieben am: 04.04.2005 14:16:36
Hallo Ceyser Soze,
danke, dass du dich unseres Problems annimmst. Ich probierte eben deinen Vorschlag aus. Es kam aber die Fehlermeldung:
Fehler beim Kompilieren:
Ungültiger Verweis auf Next-Steuervariable
wobei das i hinter dem Next blau unterlegt ist. Oder muss ich für das i selbst etwas einsetzen? Ich weiß da nicht weiter.
Gruß
Jörg
Bild

Betrifft: AW: letzte Zeile wieder löschen
von: Ceyser Soze
Geschrieben am: 04.04.2005 14:30:08
...sorry. das funktioniert.
Vorrausgesetzt die Werte stehen in C16-C17.

Sub test2()
Dim i As Integer
Dim erste As String, rest As String
With ActiveSheet
For i = 18 To 16 Step -1
    erste = Left(.Cells(i, 3), 30)
    rest = Mid(.Cells(i, 3), 31, 255)
    .Cells(i, 3) = erste
    .Cells(i, 3).Offset(1, 0).Insert
    .Cells(i + 1, 3) = rest
Next i
endwith
End Sub

gruss
CS
Bild

Betrifft: AW: letzte Zeile wieder löschen
von: ceyser soze
Geschrieben am: 04.04.2005 14:33:19
.....aus dem endwith muss end with gemacht werden.
sorry - habe noch kein syntax-tool
Bild

Betrifft: AW: letzte Zeile wieder löschen
von: Andi
Geschrieben am: 04.04.2005 14:38:15
Du hattest in Deinem ersten posting
for intZeile ...
[...]
next i
geschrieben. Damit geht's natürlich nicht...
Schönen Gruß,
Andi
Bild

Betrifft: AW: letzte Zeile wieder löschen
von: Ceyser Soze
Geschrieben am: 04.04.2005 14:38:47
aber jetzt...

      

Sub test2()

Dim i As Integer

Dim erste As String, rest As String

With ActiveSheet

For i = 18 To 16 Step -1

    erste = Left(.Cells(i, 3), 30)

    rest = Mid(.Cells(i, 3), 31, 255)

    .Cells(i, 3) = erste

    .Cells(i, 3).Offset(1, 0).Insert

    .Cells(i + 1, 3) = rest

Next i

End With

End Sub 



Bild

Betrifft: AW: letzte Zeile wieder löschen
von: Jörg
Geschrieben am: 04.04.2005 15:30:50
Hallo,
danke euch. Es funktioniert aber nicht so wie wir uns das wünschen. Führe ich das Makro so aus, wie du es mir zuletzt zuschicktest, dann wird die Zeichenfolge, die nicht in C16 passt, in C17 geschrieben. Dieser Rest ist in unserem Fall wieder länger als 30 Zeichen und der Rest größer 30 müsste wieder in der Zelle darunter (C18) eingesetzt werden. Zusätzlich müsste jeweils eine neue Zeile eingefügt werden, damit die Zellen C17 und C18 nicht einfach überschrieben werden. In dem Makro, das ich zuerst hier reinstellte funktionierte das auch soweit, nur wurde immer eine Zeile (19) zuviel eingefügt. Die möchte ich jetzt mit dem Makro noch wegbekommen.
Vielen Dank schon mal.
Grüße
Jörg
Bild

Betrifft: AW: letzte Zeile wieder löschen
von: Ceyser Soze
Geschrieben am: 04.04.2005 19:40:13
Hi Jörg,
hatte das am Anfang nicht sofort richtig verstanden.
Ich habe meinen code nochmal überarbeitet.


      
Sub string_teilen()
Dim arrStrings(10) As Variant
Dim intZähler As Integer, i%, j%, k%
With ActiveSheet
For i = 18 To 16 Step -1
    original = .Cells(i, 3)
    intZähler = 1
    arrStrings(intZähler) = Left(original, 30)
    
For j = 31 To 255 Step 30
        intZähler = intZähler + 1
        arrStrings(intZähler) = Mid(original, j, 30)
    
Next j
    
For k = (Application.WorksheetFunction.RoundUp((Len(original) / 30), 0)) To 1 Step -1
        .Cells(i, 3).Offset(1, 0).Insert
        .Cells(i + 1, 3) = arrStrings(k)
    
Next k
    .Cells(i, 3).Delete
Next i
End With
End Sub 

     Code eingefügt mit Syntaxhighlighter 3.0

Das müsste funktionieren...
Gruß
CS
Bild

Betrifft: AW: letzte Zeile wieder löschen
von: Ceyser Soze
Geschrieben am: 04.04.2005 19:43:37
ich hab deinen code erst nicht verstanden, daher habe ich einen eigenen geschrieben.
aber jetzt habe ich mir deinen nochmal angesehen. eigentlich hat nicht mehr viel gefehlt:


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

     Code eingefügt mit Syntaxhighlighter 3.0


bei mir hats hingehauen...
Bild

Betrifft: AW: letzte Zeile wieder löschen
von: Ceyser Soze
Geschrieben am: 04.04.2005 19:58:46
...probier deinen code mal mit einem string in zeile C18, der 93 zeichen hat oder so...
Bild

Betrifft: AW: letzte Zeile wieder löschen
von: Jörg
Geschrieben am: 05.04.2005 11:05:01
Hallo Ceyser Soze,
vielen, vielen Dank für die Hilfe. Jetzt funktioniert es. Ich konnte gestern ncht mehr daran arbeiten, da ich noch zu einem ganz anderen Problem gerufen wurde.
Weißt du oder jemand anderes noch eine Lösung, wie das Makro selbst alle Zellen in der Tabelle sucht, wo die Zeichenlänge über die Spaltenbreite hinausgeht und dann die restlichen Zeichen so in die Zellen darunter setzt, wie im Makro oben? Bis jetzt muss dem Makro ja noch gesagt werden, in welcher Zelle der Fall auftritt.
Vielen Dank
Grüße
Jörg
Bild

Betrifft: AW: letzte Zeile wieder löschen
von: Jörg
Geschrieben am: 05.04.2005 12:20:14
Hallo Ceyser Soze,
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
Bild

Betrifft: AW: letzte Zeile wieder löschen
von: Ceyser Soze
Geschrieben am: 05.04.2005 15:33:56
Hi Jörg,
falld Du Deine eigene Version benutzt, solltest Du unbedingt prüfen, ob Dein Makro auch im letzten Durchlauf, also beim aufteilen der letzten Zeilen, richtig arbeitet. Als ich das getestet habe, ist mir aufgefallen, dass es bei der letzten Zeile nicht mehr komplett aufteilt...
Gruß
CS
 Bild

Beiträge aus den Excel-Beispielen zum Thema "letzte Zeile wieder löschen"